The Best SteemIt UpVoting Strategy Calculator in Javascript


In my previous post, a question was raised: How to upvote in order to maximize the payout per day?

Things could get very complicated, so we make some assumptions:

We assume that you start with a P (Voting Power, with P=1 equals 100% voting power), and we know that 100% vote costs around 2% voting power. Each 36 minutes, you get 0.5% voting power restored.

And we know that the 100% voting power generates M dollar payout. If you only upvote T times and that happens only in a specific N-hours timespan e.g. from 10:00AM to 10:00PM (after that, you go to sleep).

The straightforward voting strategy will be to use all T upvotes at the beginning of the timespan.

The payout equation will be:

Sum P*M*(1-0.02*(i-1)) for i=1..T

For example, when T=2, upvoting twice immediately after start will be:

P*M + P*M*(1-0.02)

Translated into Javascript, the code explains the idea:

1
2
3
4
5
6
7
8
9
10
11
12
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout0(P, M, T, N) {
    var x = 0;
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02; // 2% voting power decrease 
    }
    return x;
}
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout0(P, M, T, N) {
    var x = 0;
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02; // 2% voting power decrease 
    }
    return x;
}

However, if the starting power is not 100%, it is always wait till the end of the timespan, when we have bigger voting power. With a line added, we have a better version:

1
2
3
4
5
6
7
8
9
10
11
12
13
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout1(P, M, T, N) {
    var x = 0;
    P = Math.min(1, P + 0.005 / 0.6 * N); // Maximum 100% voting power
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02;  // 2% voting power decrease
    }
    return x;
}
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout1(P, M, T, N) {
    var x = 0;
    P = Math.min(1, P + 0.005 / 0.6 * N); // Maximum 100% voting power
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02;  // 2% voting power decrease
    }
    return x;
}

Every 36 minutes we got 0.5% voting power back, that is we restore 0.005/0.6 each hour. Another strategy is to divide the N hour time span into T-1 slots, so with the energy restores at each slots, the equation becomes:

Sum P*M*(1-0.02*(i-1)+R) for i=1..T

R is the energy restored per N/(T-1), using JS explains better.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout2(P, M, T, N) {
    var x = 0;  
    var sp_restored = 0;    
    if (T == 1) {
        P = Math.min(1, P + 0.005 / 0.6 * N);   
    } else {
        var sp_restored = 0.005 / 0.6 * (N / (T - 1));
    }
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02;  // 2% loss per 100% upvote 
        P += sp_restored; // each 36 minutes restore 0.5%
    }
    return x;   
}
// P - Current Voting Power e.g. 100%
// M - Payout at 100%  unit $
// T - Number of Upvotes
// N - Number of Hours (Interval)
function calcPayout2(P, M, T, N) {
    var x = 0;  
    var sp_restored = 0;    
    if (T == 1) {
        P = Math.min(1, P + 0.005 / 0.6 * N);   
    } else {
        var sp_restored = 0.005 / 0.6 * (N / (T - 1));
    }
    for (var i = T; i > 0; -- i) {
        x += P * M;
        P -= 0.02;  // 2% loss per 100% upvote 
        P += sp_restored; // each 36 minutes restore 0.5%
    }
    return x;   
}

The equation can be uniformed by extracting M which is like a constant. We use M=270 because @abit gives roughly 270$ per 100% upvote. A bigger M will make the result analysis clear.

SteemIt Upvoting Strategy Data Analysis

Disclaimer: I am not responsible for your payout.. These are just for your references (and may contain error).

When you only upvote once

1
2
var T = 1;
var N = 10;
var T = 1;
var N = 10;

You can upvote when you wake up, or when the VP restores – vote before you go to bed. If P=0.9, the three methods generate payouts of:

calcPayout0=243
calcPayout1=265.5
calcPayout2=265.5

The Voting Power cannot restore to 100% in 10 hour span, that is why the maximal payout is 265.5 instead of 270. Clearly, voting when you have a higher voting power is the best choice.

However, if the starting power is 100%, it does not make any difference, they all give $270 payout.

When you upvote 8 times per day

Starting Voting Power P=100%, T=8, N=10, The third strategy is better (vote and rest)

calcPayout0=2008.8
calcPayout1=2008.8
calcPayout2=2098.8

However, when the P is 80% at the beginning of timespan:

1
2
3
4
var P = 0.8;
var M = 270;
var T = 8;
var N = 10;
var P = 0.8;
var M = 270;
var T = 8;
var N = 10;

The second method gives a higher payout. That is, you use your 8 upvotes immediately before you go to bed when you have already restored to a higher VP for the day.

calcPayout0=1576.8
calcPayout1=1756.8
calcPayout2=1666.8

When the P is closest to 100%, the third strategy (vote and rest) is better than the second one.

1
2
3
4
var P = 0.99;
var M = 270;
var T = 8;
var N = 10;
var P = 0.99;
var M = 270;
var T = 8;
var N = 10;

Does the result surprise you?

calcPayout0=1987.2
calcPayout1=2008.8
calcPayout2=2077.2

There are, of course, other voting strategies, for example, you can use half your votes in the morning and the rest in the evening. But I guess the results are pretty much similar. My suggestions according to the fact that most Steemians won’t have a higher P at the beginning of each day:

Use your votes right before you go to bed!

Most of use won’t care so much because our M is small compared to big whales.. For example, my M = 1.7.

calcPayout0=12.512
calcPayout1=12.648
calcPayout2=13.0786666666667

The results are very close: So, don’t spend too much time considering your best voting strategy. You should spend more time in your posts on SteemIt!

You may also like: SteemIt 怎么样点赞收益最高?

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
loading...
966 words
Last Post: How to Use Steem API/transfer-history and IFTTT to sync to Slack?
Next Post: Simple Method to Insert Math Equations in SteemIt MarkDown Editor

The Permanent URL is: The Best SteemIt UpVoting Strategy Calculator in Javascript

Leave a Reply