Tx da95b6f0ffbb6877f73ad5b17bc04445a221b9a4@33054364

Included in block 33,054,364 at 2019-05-19 21:04:45 (UTC)

da95b6f0 comment options: 100.0% SBD, allow votes: true, allow curation rewards: true

Raw transaction

ref_block_num24,198
ref_block_prefix1,592,818,448
expiration2019-05-19 21:14:33
operations
0.
0.comment
1.
parent_author""
parent_permlinkblog
authorremlaps
permlinksimulating-a-steem-curation-rewards-distribution-that-is-modeled-after-a-2nd-price-auction
title"Simulating a Steem curation rewards distribution that is modeled after a 2nd price auction"
body"<h6>This post describes some simulated results from a curation distribution algorithm that was inspired by the concept of a second-price auction.</h6>
<hr>
<h3>Introduction</h3>
<div class=pull-right><p>
![image.png](https://files.steempeak.com/file/steempeak/remlaps/LzFZCBCX-image.png)
<A HREF="https://pixabay.com/photos/flea-market-stand-market-antiques-343123/">source</A>
</p></div>
Some time ago, I had a conversation with @personz about the desirability of self-voting. I hope I'm not mis-characterizing the argument, but as I recall, the position that @personz took was that self-voting conveys no information to the blockchain, so it should be considered equivalent to noise or spam. This led to the conclusion that all authors should abstain from self-voting.
On the other hand, my position was that voting can be abused, whether by self or others, and the self-vote is a perfectly valid form of expression, provided that it's sincerely given in reflection of the merit of the content. In my own view, self-voting is ok, but it doesn't absolve the voter of the obligation to put an honest appraisal on the value of one's own post.
Of course, this is a long-standing topic of conversation among Steemizens, and I'm not tring to reopen the debate in this post, but I'd like to revisit that conversation in another context.
While we were talking, I said that it reminded me of the karate tournaments that @cmp2020 used to attend. In those tournaments, 5 judges would submit their scores, the lowest and highest scores would be thrown out, and the contestant would receive the average of the scores from the remaining 3 judges. This methodology eliminated outliers whose votes were wildly out of step with the judging consensus. I said I wondered if something similar could mitigate the harm from abusive votes (by self and others) in the Steem curation consensus.
Either during that conversation, or thinking about the karate tournaments & Steem voting shortly afterwards, I was reminded of an article that I had read some time before which indicated that Google had done some extensive game theory research with the problem of fair ranking in its AdWords product, and the best solution they found was the <A HREF="http://www.gametheory.net/dictionary/auctions/secondpriceauction.html">2nd price auction</A>.
And there things stood. I have mentioned in a number of comments since that time that I thought it might be a good idea to explore this concept, but basically left it to others to figure out what a voting algorithm based upon a second price auction would even look like. Of course, this guaranteed that the idea would be ignored.
So, last week, I finally thought that I would go ahead and write a rewards simulator to see how a voting algorithm could even be modeled after the concept of a second price auction. Here's what I found.
<center>https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png</center>
<h3>What is a second price auction?</h3>
Simply put, in the <A HREF="https://en.wikipedia.org/wiki/Generalized_second-price_auction">second price auction</A>, the winner of the auction is the person that bids the most, but the price they pay is not the price that they bid. Instead, the price they pay is the 2nd highest bid that was submitted.
As I recollect, the reason that Google chose this algorithm for their Adwords product, is because of a convenient mathematical property, stated here on <A HREF="">gametheory.net</A>:
<blockquote> The theoretical nicety of second price auctions, first pointed out by William Vickrey, is that bidding one's true value is a dominant strategy</blockquote>
So the question is, can we find a curation rewards calculation that acts in similar fashion to the karate tournament scoring by weeding out outliers and like a 2nd-price auction by incentivizing voters to vote correctly (according to their own perceptions)?
<center>https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png</center>
<h3>How does this apply to Steem voting?</h3>
After commenting repeatedly that I wonder if there is a solution to Steem's curation problem in an algorithm that's modeled after a second price auction, I decided that I should take the idea past "hand-waving." In this context, what does "modeled after" even mean?
So last week, I wrote a shell script to loosely simulate basic curation rewards on a steemit post. (It ignores the reverse auction for early voting and negative voting) Once I had it so that it seemed to be close to matching actual payouts, I made a modified version that would accept the current voting information and calculate rewards as-if generated through a second price auction inspired algorithm.
In this version, the voting is all the same, but the rshares from the highest voter get thrown back into the rewards pool. The payouts are then calculated based on the total after those rshares get subtracted. This means that the highest and earliest voters still win the distribution, but the reward payment amounts are made as if the highest voter hadn't voted. Each voter gets credit for the rshares from the next-highest voter, with the exception of the lowest voter (in rshares), who gets credit for their own rshares - unless they're the only voter, then they get 0. (<i>yeah, that seems like a kludge, but I just wanted to "sketch" the idea out.</i>)
Using that script, here are the top 10 potential curation rewards on one of today's trending posts:
R E W A R D S
current | simulated
---------- ----------
21.187692 | 3.132037
11.524 | 10.155
11.08 | 16.51
10.0770 | 9.67429
6.268 | 5.795
2.5009 | 2.0895
1.190127 | 0.836698
0.461401 | 0.194006
0.447819 | 0.295523
0.2631 | 0.1247
And here is the same information from a post with a high amount of self-voting:
R E W A R D S
current | simulated
---------- ----------
5.665636 | 0.274980
1. | 0.3
0.505638 | 0.046393
0.309271 | 0.091192
0.148121 | 0.160000
0.147017 | 0.051299
0.069935 | 0.030932
0.0494 | 0.0188
0.039489 | 0.015661
0.036847 | 0.014599
From the same trending post, here is a graph of current and simulated rewards, sorted by highest payout under the actual algorithm.
![image.png](https://files.steempeak.com/file/steempeak/remlaps/CdGedGIS-image.png)
And here is a similar graph from the post with a high self-vote.
![image.png](https://files.steempeak.com/file/steempeak/remlaps/KSQS11H2-image.png)
As you can see, in both posts, the outlier votes are drastically reduced, but voters who are inside the consensus range don't change as much. By punishing the outlier like that, it creates an incentive for a voter not to vote too far away from other voters - you know that even if you "win", your rewards are being calculated from someone else's vote, and it also creates a requirement that a post must get at least 2 votes to receive a payout.
<center>https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png</center>
<h3>Discussion</h3>
Of course, the simulator hasn't been validated and it can't predict how people's behavior would change in response to the methodological change. It also doesn't account for all the rshares getting put back into the reward pool. But, in order to "game" this algorithm, the abusive voter would need to divide their stake into 2 or more separate accounts, and they would have to be willing to sacrifice all of the rshares from one account. So while it may not be perfect, it seems that it may create a disincentive against abusive voting, whether by self or others.
It is also interesting that Steemit proposed the <A HREF="/@vandeberg/reward-curve-deep-dive">convergent linear</A> solution in the days after I wrote this script. Since that proposal creates an incentive *not* to split one's stake, it might be interesting to see how these two proposals interact with each other.
I don't claim that this is a final answer to Steem's problem with inaccurate post ranking, but I do think that it may be worthy of further consideration.
<hr>
<h5><div class=pull-left><i><b>Thank you for your time and attention.</b></i></div></h5>
<h6><div class=pull-right> <b>As a general rule, I up-vote comments that demonstrate "proof of reading".</b></div><br><br></h6>
<hr>
<div class=pull-right><a href="https://steemit.com/@remlaps"><img src="https://media.licdn.com/mpr/mpr/shrinknp_400_400/p/2/000/028/0bf/04cf437.jpg"></a></div>
<br>
<h6>Steve Palmer is an IT professional with three decades of professional experience in data communications and information systems. He holds a bachelor's degree in mathematics, a master's degree in computer science, and a master's degree in information systems and technology management. He has been awarded 3 US patents.<br><br>
Steve is also a co-founder of the [Steem's Best Classical Music](https://www.facebook.com/SteemitClassicalMusic/) Facebook page, and the @classical-music steemit curation account.</h6>
Follow in RSS: <A HREF="http://www.steemrss.com/@remlaps/blog">@remlaps</A>, <A HREF="http://www.steemrss.com/@remlaps-lite/blog">@remlaps-lite</A>
<center>https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png</center>"
json_metadata{"app":"steempeak/1.9.9","format":"markdown","tags":["blog","curation","game-theory","economics","algorithms"],"users":["personz","cmp2020","vandeberg","remlaps","classical-music","remlaps-lite"],"links":["https://pixabay.com/photos/flea-market-stand-market-antiques-343123/","/@personz","/@personz","/@cmp2020","http://www.gametheory.net/dictionary/auctions/secondpriceauction.html","https://en.wikipedia.org/wiki/Generalized_second-price_auction","#","/@vandeberg/reward-curve-deep-dive","/@remlaps","https://www.facebook.com/SteemitClassicalMusic/"],"image":["https://files.steempeak.com/file/steempeak/remlaps/LzFZCBCX-image.png","https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png","https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png","https://files.steempeak.com/file/steempeak/remlaps/CdGedGIS-image.png","https://files.steempeak.com/file/steempeak/remlaps/KSQS11H2-image.png","https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png","https://media.licdn.com/mpr/mpr/shrinknp_400_400/p/2/000/028/0bf/04cf437.jpg","https://steemitimages.com/DQmWwM8dKvSHH9cqp2om3L8zU5iovAw4ZZeDvjMAc8DBwdE/image.png"]}
1.
0.comment_options
1.
authorremlaps
permlinksimulating-a-steem-curation-rewards-distribution-that-is-modeled-after-a-2nd-price-auction
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
allow_votestrue
allow_curation_rewardstrue
extensions
0.
0.0
1.
beneficiaries
0.
accountsteempeak
weight500
extensions[]
signatures
0.2025f78c4501bce03929d103d3cf34f4d6904c45d39cd01d57e0a3b64b22aeabb71be9e1b8513d1de92b3bf860587bfebbe5363debf37dbd6f54d15683258cd3e6
transaction_idda95b6f0ffbb6877f73ad5b17bc04445a221b9a4
block_num33,054,364
transaction_num6