How to estimate historic steem_per_mvests values for converting old rewards from vest to steem.

in #steemdev8 years ago (edited)

I tried to calculate old rewards using https://steemdata.com/. I noticed then that old steem_per_mvests values are not included in the database. As all rewards are saved in Vests, the steem_per_mvests value from the payout date must be known for calculating the amount of claimed rewards in Steem power.

Small example

Reward payout for old posts is stored in vests: https://steemdb.com/deutsch/@holger80/virtuelle-cloud-mining-ponzi-schemen-auch-bekannt-als-hypt/data

    
{
    "author": "holger80",
    "permlink": "virtuelle-cloud-mining-ponzi-schemen-auch-bekannt-als-hypt",
    "sbd_payout": 0.558,
    "steem_payout": 0,
    "vesting_payout": 167.986184,
    "app_name": "steemit",
    "app_version": "0.1",
    "_id": "18745605\/holger80\/virtuelle-cloud-mining-ponzi-schemen-auch-bekannt-als-hypt",
    "_ts": {
        "$date": {
            "$numberLong": "1515257697000"
        }
    }
}

In order to calculate the recieved Steem Power, I need the steem_per_mvests value from the 06.01.2018 (calculated from "$numberLong": "1515257697000"). For the example, the error is only small when instead of the correct value the newest steem_per_mvests value is used. In mosts example scripts, Converter().vests_to_sp( ) is used for this:

Converter(steemd_instance=steem).vests_to_sp(167.986184)
0.08208576818168924 # recieved Steem Power

But this value is only an estimation, as the steem_per_mvests value from the 27.01.2018 and not from the 06.01.2018 is used. The error for this example is only very small, but when the error would increase for older posts with high payouts.

Getting old steem_per_mvests values

After some research, I found out that old values can be downloaded as a JSON-file from https://steemdb.com/api/props. The oldest data that can be downloaded is from 19.01.2017.

The result is plotted here:

Data from https://steemdb.com/api/props are used to generate this plot.
As can be seen that steem_per_mvests is changing linearly over time.

Searching for old data

Luckily, I found old posts, in which steem_per_mvests values as mentioned:

steem_per_mvestsDate
129.2292016-5-31
196.0012016-7-6
229.82016-7-19
236.3422016-7-22
275.515022552782016-8-14
448.1952016-11-19

I added the data to the plot:

It seems that using two linear approximations can be used to estimate the complete steem_per_mvests data.
There is only one change due to the 16th hard fork from December 2016, in which the yearly inflation rate was reduced to 9.5%.
After applying np.polyfit(x, y, 1)on the https://steemdb.com/api/props dataset and saving the parameter to a2 and b2, I applyed np.polyfit(x, y, 1) to the older data (which is shown in the table) and saved the parameter to a and b. The result estimation function is shown here:

def est_steem_per_mvests(timeStamp):
    a = 2.1325476281078992e-05
    b = -31099.685481490847
# Parameter a2 and b2 apply after the 16th hard fork in December 2016.
    a2 = 2.9019227739473682e-07
    b2 = 48.41432402074669
    
    if (timeStamp < (b2-b)/(a-a2)):
        return a * timeStamp + b
    else:
        return a2 * timeStamp + b2
def est_vests_to_sp(vests, timeStamp):
    return calcMVestSteem(timeStamp) * (vests/1e6)

def est_vests_to_sp_numberlong(vests, numberLong):
    return calcMVestSteem(float(numberLong)/1000) * (vests/1e6)

The estimated steem_per_mvests is shown in the following two plots. The root mean square error of the estimated data to the real data which are shown in the first plot is 0.0351 Steem per MVests (1e6 vests).

Estimation of future steem_per_mvests values

My prediction of future values (not accurate as the in inflation is reduced every year):

Datesteem_per_mvests
2019-01-01497.13
2020-01-01506.2
2025-01-01552.1
2030-01-01597.9
Sort:  

Very interesting, @holger80!

Why does it say this?

"virtuelle-cloud-mining-ponzi-schemen-auch-bekannt-als-hypt",

I've upvoted and resteemed this article as one of my daily post promotions for the @mitneb Curation Trail Project. It will be featured in the @mitneb Curation Trail Project Daily Report for 28 JAN 2018. I'm following you now, too!

Cheers!

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by holger80 from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Auch wenn dieser Beitrag über 2 Jahre alt ist, kann er immer noch zu gewissen Erkenntnissen beitragen.
Vielen Dank an @flugschwein

$rewarding 100% 5min

The reward of this comment goes 100 % to the author holger80. This is done by setting the beneficiaries of this comment to 100 %.