And in case you want to play with the Python code (using PyCharm for example):
import sys
import matplotlib.pyplot as plt
import numpy as np
def apy_per_mn(apy):
return apy / (365 * 24 * 60)
def compute(value, fee, apy_mn, claim_period, resulting_period_mn):
_coefficient = 1 + (claim_period * apy_mn)
while value > 0 and resulting_period_mn > 0:
value = (_coefficient * value) - fee
resulting_period_mn -= claim_period
if value <= 0:
return 0
return value
def main():
np.set_printoptions(threshold=sys.maxsize)
claim_period_size = 21 * 24 * 60
apy_current = 30.63 / 100
fee_withdraw_delegator_reward = 0.44388
fee_delegate = 0.608796
fee_total = 1 * fee_withdraw_delegator_reward + fee_delegate
resulting_period_mn = 730 * 24 * 60
values = np.array([5000, 10000, 20000, 50000])
table = np.empty((5, claim_period_size - 1), dtype=float)
i = 0
apy_mn = apy_per_mn(apy_current)
for val in values:
results = []
for x in range(1, claim_period_size):
y = compute(val, fee_total, apy_mn, x, resulting_period_mn)
results.append(y)
table[i] = np.asarray(((results/val)-1)*100)
i += 1
# Initialise the figure and axes.
fig, ax = plt.subplots(1, figsize=(8, 6))
fig.suptitle('FunctionX staking results (based on time before claiming)', fontsize=15)
plt.ylim([80,88])
x = np.arange(1, claim_period_size, 1)
ax.plot(x, table[0], color="red", label="Initial: $5K FX")
ax.plot(x, table[1], color="pink", label="Initial: $10K FX")
ax.plot(x, table[2], color="green", label="Initial: $20K FX")
ax.plot(x, table[3], color="blue", label="Initial: $50K FX")
ax.set_xlabel('Period (in minutes) to claim reward')
ax.set_ylabel('% gain')
major_xticks = np.arange(0, claim_period_size, 2500)
minor_xticks = np.arange(0, claim_period_size, 500)
major_yticks = np.arange(80, 88, 0.5)
ax.set_xticks(major_xticks)
ax.set_xticks(minor_xticks, minor=True)
ax.set_yticks(major_yticks)
ax.grid(which='both')
# Add a legend, and position it on the lower right (with no box)
plt.legend(loc="lower right", title="Legend Title", frameon=False)
plt.show()
if __name__ == '__main__':
main()