steemrewarding.com - vote delay optimization added

in #utopian-io6 years ago (edited)

rewarding_batch2.png

Repository

https://github.com/holgern/steemrewarding

steemrewarding.com is a feature-rich automatic voting tool. It can be used to create voting rules at https://steemrewarding.com, when posting authority was given to the @rewarding account. I created a discord server for all topics regarding steemrewarding.com: discord invitation.

steemrewarding is currently used by 126 users which created 1193 rules for posts, 85 rules for comments and 24 trail vote rules. In the last 7 days were 4244 time based votes and 1986 vp based votes broadcasted through steemrewarding.

New Features

New rules can be directly created by entering steemrewarding.com/@author in the browser

When entering a steem account name after stemrewarding.com, a new rule can be directly be created. For example, https://steemrewarding.com/@utopian-io
will open the new rule editor:
image.png

Vote delay optimization

A user of steemrewarding.com can now optimize the vote delay time for all time based vote rules automatically. The optimization must be enabled in https://steemrewarding.com/settings:
image.png

When enabled, each vote_log is analyed in the calc_curation_performance.py script.

best_performance = 0
best_vote_delay_min = 0
for v in c["active_votes"]:
    v_SBD = stm.rshares_to_sbd(int(v["rshares"]))
    if v_SBD > 0 and int(v["rshares"]) > rshares * 0.5:
        
        p = float(curation_rewards_SBD["active_votes"][v["voter"]]) / v_SBD * 100
        if p > best_performance:
            best_performance = p
            best_vote_delay_min = ((v["time"]) - c["created"]).total_seconds() / 60

All given votes to the upvoted post/comment that have at least half the rshares of the rule creator are analyed. When there is a single vote that have a better performance, its vote delay time and its performance is stored.

The values are shown in the vote log https://steemrewarding.com/show_vote_log:
image.png

A vote delay time is optimized when

  • the actual vote delay is near the set vote delay (time difference below 1 minute)
  • optimize_vote_delay is enabled unter settings
  • disable_optimization is not enabled for the rule
  • the initial vote delay is between minimum_vote_delay and maximum_vote_delay

minimum_vote_delay and maximum_vote_delay can be set at steemrewarding.com/settings
image.png

When a best_performance and best_vote_delay_min was found for a vote rule log entry, the vote delay is optimized by:

minimum_vote_delay = acc_data["minimum_vote_delay"]
maximum_vote_delay = acc_data["maximum_vote_delay"]
optimize_threshold = 1 + (acc_data["optimize_threshold"] / 100)
optimize_ma_length = acc_data["optimize_ma_length"]

    
vote_rule = voteRulesTrx.get(vote_log["voter"], c["author"], c.is_main_post())
if vote_rule is not None and not vote_rule["disable_optimization"]:
    vote_delay_min = vote_rule["vote_delay_min"]
    if best_performance > performance * optimize_threshold and vote_delay_min <= maximum_vote_delay and vote_delay_min >= minimum_vote_delay:
        if optimize_ma_length > 1:
            vote_delay_min = (vote_delay_min * (optimize_ma_length - 1) + best_vote_delay_min) / optimize_ma_length
        else:
            vote_delay_min = best_vote_delay_min
        if vote_delay_min > maximum_vote_delay:
            vote_delay_min = maximum_vote_delay
        elif vote_delay_min < minimum_vote_delay:
            vote_delay_min = minimum_vote_delay
        voteRulesTrx.update({"voter": vote_log["voter"], "author": c["author"], "main_post": c.is_main_post(),
                             "vote_delay_min": vote_delay_min})
        vote_log["optimized_vote_delay_min"] = vote_delay_min

When the optimal vote delay differs less than optimize_threshold percentage from the old one, the vote delay is not changed. This prevents that the vote delay time from jittering.

A simplified moving average calculation is then used to update the vote delay time. The influence of the optimal voting time is set by optimize_ma_length. When it is set to 20, it will take 20 steps approach a new optimum.

He is an example, that show how it works:
image.png
I set the vote delay to 13 minutes, the best vote delay is at 8.2 minutes. The new vote delay is then:
(( optimize_ma_length - 1) * 13 min + 8.2 min) / optimize_ma_length
which is for optimize_ma_length=20 12.76 minutes. This means that the vote delay for my rule is reduced in order to approach the optimal vote time.

The parameter optimize_ma_length and optimize_threshold can be set in steemrewarding.com/settings

image.png

Commits

Add vote optimization for all time based votes

Add option to add a rule by adding an account to steemrewarding.com (e.g. https://steemrewarding.com/@holger80)

GitHub Account

https://github.com/holgern

Sort:  

Looks like a great feature to optimize the upvote time. Great to see steemrewarding is going bigger.


Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Chat with us on Discord.

[utopian-moderator]

Thank you for your review, @emrebeyler! Keep up the good work!

Wow this is an incredible update which I definitely will use.
It will make it so much easier to find the perfect curation time.Thank you so much for giving us this incredible tool.

Hey @holger80, thanks for the new feature: I'll try it ASAP! ;)
Cheers!


Everything is okay! 👌


You received an automatic upvote, because I believe in you and I love what you create! 😉

A huge hug from @amico! 🤗

😍 I love promoting @steembasicincome, even with #sbi-skip! 😜


If you dislike this automatic message, please let me know: thanks! 🙏

@holger80, I just came accross after realizing that since HF22 the preset vote delay at steemrewarding is 5 instead of 15. How come? I've never came across a #newsteem post about the detail of vote detail and timing change since HF21. Looking forwand into learing even more about steem.

steemrewarding.com is really helpfull if anybody can not follow steemit regularly. @rewarding helps people with his own capable coding performance. Thank you for this valuable post. Thank you @rewarding

Posted using Partiko Android

The biggest reward is having you as our witness and blockchain expert.

Posted using Partiko Android

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!

Great update! I’ve been using the utilities for some time with great success.

Thank you @holger80

Hi @holger80!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 6.617 which ranks you at #142 across all Steem accounts.
Your rank has dropped 83 places in the last three days (old rank 59).

In our last Algorithmic Curation Round, consisting of 211 contributions, your post is ranked at #2. Congratulations!

Evaluation of your UA score:
  • You've built up a nice network.
  • The readers appreciate your great work!
  • Great user engagement! You rock!

Feel free to join our @steem-ua Discord server

Brilliant. Gonna try it today

This post has been included in the latest edition of The Steem News in 10 posts - a compilation of the key news stories on the Steem blockchain.

Hi, @holger80!

You just got a 3.01% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

Hey, @holger80!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Congratulations @holger80! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 10000 upvotes. Your next target is to reach 11000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Hello holger80, I like your works. But I have a question, I set up an upvote per day for my friends , but I found that sometimes there is an error log: "The author was already upvoted 1 in the last 24h (max_votes_per_day is 1).". I think this rule should be a "daily limit" not "the last 24h limit". So I suggest to modify this rule, or add a choice to let the user choose whether to execute a daily limit or 24 hours limit.