Steemits Bidbot Business Income Analysis 2018 Half 1

in #utopian-io6 years ago

The bidbot business on Steemit is subject to much controversy, with both sides having a fair and reasonable arguments for their development and use on Steemit.  Like it or not they are now part of the Steemit ecosystem. 

Repository

 https://github.com/steemit/steem 

Aim of Analysis

The aim of this analysis is to establish 

1.  Descriptive statistical information for an overview on bids sent to bidbots

2. How much SBD was sent to Bidbots in the first half of 2018

3. What % of SBD paid out in author rewards is sent to bidbots

4. Visualise year to date trends 

5. Establish what % of Curation rewards are paid to bidbots

6. Establish what % of Total Vest claimed goes to bidbots

Descriptive Statistics on bids sent

Descriptive statistics are useful for summarizing large sets of data.  The aim of this was to get an overview of the bids sent

  

It is interesting to see that median value sent to bidbots has reduced from Jan to June, however the standard deviation has increased.

A low standard deviation indicates that the data points tend to be close to the mean, while a high standard deviation indicates that the data points are spread out over a wider range of values.

We can also see the distribution of the bids in the histogram, with a right tailed curve as most bids are placed at lower values.

How much SBD was sent to Bidbots this year?

  

In total 2.58M SBD was sent to the top big bots as listed.  This value required adjusting to remove transfers not related to bids and also refunds where no votes were given.  This leaves a fully adj SBD value sent to bidbots for April to be 2.43M SBD.  It is the fully adjusted value we will be using from here on to based our calculation

We can see from the time graphs, Jan to march seen a decline in the SBD sent until 13th April, from then there was a step rise in the daily amount of SBD sent till the 5th of May and it has been downhill again since. At 30th June we were a new yet low.

What % of SBD Rewards Claimed on Steemit were sent back to Bidbots?

  

SBD is the currency used to bid on these bots. SBD is earned only by taking a 50% 50% pay out on a post.  That means that SBD is NOT earned for curation. At the moment, SBD is not paid out at 50% instead some of it actually paid in liquid Steem.  This means there is less SBD available

 22.44% of total SBD rewards claimed were sent back to bidbots so far in 2018.  In January this was almost 15% and has risen each month to a whopping 35.74% in June. We can see this in the red bar chart above. 

The yellow bar chart shows how much SBD was claimed in SBD. June was down 58% on May and would therefore account for the higher % of SBD being sent to bidbots.  

Annual Trend

The chart below shows the number of daily bids in red, number of posts submitted for bits in black and the number of authors in blue.

  

 We can see that the trend for each line is the same. The number of daily bids has now dropped to its lowest level this year with only 3609 bids made on the 30th June compared to 9786 at its peak in April.  

The distinct number of Authors also sending to bidbots has reduced.  894 authors sent bids to bots on the 30th June, lowest value year to date. Whereas the highest value year to date was 2499 on the 30th April.  

What % of Curation Rewards Claimed are paid to bidbots?

 

The business model of the bidbots allows them earn curation rewards on posts they voted on in addition to the bids made.  Year to date 29.8% of Curation Rewards claimed are paid to bidbots.

  The purple bar chart shows the total vests claimed from curation rewards this year, by month. We can see that June had the highest total vests curation reward this year. However while the total curation vests earned increased 16% from May to June, bidbot owners seen almost no movement. 

As a % of total curation rewards earned by bodbots as a total of all vests earned by curation, bidbots were averaging above 30% until June where it is now down to 25.4%.  

The pie chart below shows this by bidbot

  

What % of total Vests claimed (author and curator) went to bidbots?

So far we have looked at the % of SBD earned from author rewards going to bidbots. We have also looked at the % of total curator rewards earned by bidbots.  Now we will take a look at the total vests claimed (both author and curators) made by bidbots.  The total vests claimed represents ALL author and curator rewards.

   

We can see from above for the year to date Bidbots have earned almost 11% of total rewards on the platform.  In Jan this % was as low as 7.67% rising to almost 14% in June.

Concerning Trend

When looking at the data, I did do further exploratory work and found something concerning, which is not only backed up with data but also a recent comment left on a post.

Here is the comment

 

and here is the data

what we can see is by the end of June more than 100% of SBD claimed is being sent back to bidbots. This means that people are 'saving up' their SBD and as the comment says, also powering down so they can make bids

Conclusion

The high standard deviation and range in June, coupled with the histrogram would suggest that a few people are bidding unnecessarily high.  As there is less SBD available, less people are bidding and in general the bids are getting smaller

 2.43M SBD was sent to bidbots for voting from Jan to June, peaking in May SBD is earned only as Author rewards. 

22.44% of all SBD earned on Steemit has been sent to bidbots for votes. The trends show that as the SBD claimed in rewards decreased, the % SBD sent to bidbots increased, and as the SBD claimed increase the % SBD decreased.  As SBD has not been prinited as much in June we are seeing a high % of SBD being sent back to bidbots. 

29.8% of All curation rewards earned on Steemit are earned by bidbots. 

10.4% of ALL Steemit earning are going to bidbots.  

There is concerning evidence that people are powering down to use bidbots.



The Data and Queries

First I used the Steembottracker API to get a list of bidbots.  This list was then used in the M queries below

The data was collected from SteemSQL using PowerBI.  The following M codes were used.

M code for Sent to bid bots

let    Source = Sql.Database("vip.steemsql.com", "DBSteem", [Query="Select #(lf)*#(lf)From TxTransfers (NOLOCK)#(lf)Where timestamp >=CONVERT(DATE,'2018-01-01') and timestamp <CONVERT(DATE,'2018-07-01')#(lf)and [to] in ('tainika' ,'chronoboost' ,'getkarma' ,'weupvote' ,'alliedforces' ,'a-bot' ,'boinger' ,'jerrybanfield' ,'upyourpost' ,'pwrup' ,'brotherhood' ,'haveaheart' ,'alfanso' ,'whalepromobot' ,'joeparys' ,'peoplesbot' ,'votepower' ,'t50' ,'moneymatchgaming' ,'stef' ,'sureshot' ,'ptbot' ,'th3voter' ,'edensgarden' ,'oceanwhale' ,'botox' ,'whalecreator' ,'profitbot' ,'ecotrain' ,'automation' ,'siditech' ,'cabbage-dealer' ,'profitvote' ,'steemerap' ,'ubot' ,'dlivepromoter' ,'emperorofnaps' ,'proffit' ,'lrd' ,'bodzila' ,'peace-bot' ,'brandonfrye' ,'authors.league' ,'flymehigh' ,'noicebot' ,'redwhale' ,'lost-ninja' ,'dolphinbot' ,'rocky1' ,'estabond' ,'minnowvotes' ,'thebot' ,'booster' ,'slimwhale' ,'megabot' ,'singing.beauty' ,'estream.studios' ,'dailyupvotes' ,'ebargains' ,'promobot' ,'honestbot' ,'foxyd' ,'sunrawhale' ,'mitsuko' ,'onlyprofitbot' ,'spydo' ,'isotonic' ,'brupvoter' ,'postdoctor' ,'luckyvotes' ,'therising' ,'inciter' ,'redlambo' ,'shares' ,'nado.bot' ,'bid4joy' ,'voterunner' ,'steembloggers' ,'upmewhale' ,'mercurybot' ,'smartsteem' ,'postpromoter' ,'upme' ,'msp-bidbot' ,'aksdwi' ,'pushup' ,'appreciator' ,'sneaky-ninja' ,'lovejuice' ,'minnowhelper' ,'boomerang' ,'buildawhale')"]),    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each Text.Contains([memo], "https"))in    #"Filtered Rows"

M code for Refunds

let    Source = Sql.Database("vip.steemsql.com", "DBSteem", [Query="Select #(lf)*#(lf)From TxTransfers (NOLOCK)#(lf)Where timestamp >=CONVERT(DATE,'2018-01-01') and timestamp <CONVERT(DATE,'2018-07-01')#(lf)and [from] in ('tainika' ,'chronoboost' ,'getkarma' ,'weupvote' ,'alliedforces' ,'a-bot' ,'boinger' ,'jerrybanfield' ,'upyourpost' ,'pwrup' ,'brotherhood' ,'haveaheart' ,'alfanso' ,'whalepromobot' ,'joeparys' ,'peoplesbot' ,'votepower' ,'t50' ,'moneymatchgaming' ,'stef' ,'sureshot' ,'ptbot' ,'th3voter' ,'edensgarden' ,'oceanwhale' ,'botox' ,'whalecreator' ,'profitbot' ,'ecotrain' ,'automation' ,'siditech' ,'cabbage-dealer' ,'profitvote' ,'steemerap' ,'ubot' ,'dlivepromoter' ,'emperorofnaps' ,'proffit' ,'lrd' ,'bodzila' ,'peace-bot' ,'brandonfrye' ,'authors.league' ,'flymehigh' ,'noicebot' ,'redwhale' ,'lost-ninja' ,'dolphinbot' ,'rocky1' ,'estabond' ,'minnowvotes' ,'thebot' ,'booster' ,'slimwhale' ,'megabot' ,'singing.beauty' ,'estream.studios' ,'dailyupvotes' ,'ebargains' ,'promobot' ,'honestbot' ,'foxyd' ,'sunrawhale' ,'mitsuko' ,'onlyprofitbot' ,'spydo' ,'isotonic' ,'brupvoter' ,'postdoctor' ,'luckyvotes' ,'therising' ,'inciter' ,'redlambo' ,'shares' ,'nado.bot' ,'bid4joy' ,'voterunner' ,'steembloggers' ,'upmewhale' ,'mercurybot' ,'smartsteem' ,'postpromoter' ,'upme' ,'msp-bidbot' ,'aksdwi' ,'pushup' ,'appreciator' ,'sneaky-ninja' ,'lovejuice' ,'minnowhelper' ,'boomerang' ,'buildawhale')#(lf)"]),    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),    #"Replaced Value" = Table.ReplaceValue(#"Changed Type","#(tab)https","https",Replacer.ReplaceText,{"memo"}),    #"Filtered Rows" = Table.SelectRows(#"Replaced Value", each Text.Contains([memo], "Refund")),    #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each ([amount_symbol] = "SBD")),    #"Filtered Rows2" = Table.SelectRows(#"Filtered Rows1", each [amount] < 100)in    #"Filtered Rows2"

M Code for Claimed rewards

let    Source = Sql.Database("vip.steemsql.com", "DBSteem", [Query="Select * From TxClaimRewardBalances (NOLOCK)#(lf)Where timestamp >=CONVERT(DATE,'2018-01-01') and timestamp <CONVERT(DATE,'2018-07-01')#(lf)"]),    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}})in    #"Changed Type"

M Code for Bots curator rewards

let    Source = Sql.Database("vip.steemsql.com", "DBSteem", [Query="SELECT#(lf)reward,#(lf)timestamp,#(lf)curator#(lf)FROM VOCurationRewards (NOLOCK)#(lf)Where timestamp >= CONVERT(DATE,'2018-01-01')             and         timestamp< CONVERT(DATE,'2018-07-01')#(lf)and [curator] in ('tainika' ,'chronoboost' ,'getkarma' ,'weupvote' ,'alliedforces' ,'a-bot' ,'boinger' ,'jerrybanfield' ,'upyourpost' ,'pwrup' ,'brotherhood' ,'haveaheart' ,'alfanso' ,'whalepromobot' ,'joeparys' ,'peoplesbot' ,'votepower' ,'t50' ,'moneymatchgaming' ,'stef' ,'sureshot' ,'ptbot' ,'th3voter' ,'edensgarden' ,'oceanwhale' ,'botox' ,'whalecreator' ,'profitbot' ,'ecotrain' ,'automation' ,'siditech' ,'cabbage-dealer' ,'profitvote' ,'steemerap' ,'ubot' ,'dlivepromoter' ,'emperorofnaps' ,'proffit' ,'lrd' ,'bodzila' ,'peace-bot' ,'brandonfrye' ,'authors.league' ,'flymehigh' ,'noicebot' ,'redwhale' ,'lost-ninja' ,'dolphinbot' ,'rocky1' ,'estabond' ,'minnowvotes' ,'thebot' ,'booster' ,'slimwhale' ,'megabot' ,'singing.beauty' ,'estream.studios' ,'dailyupvotes' ,'ebargains' ,'promobot' ,'honestbot' ,'foxyd' ,'sunrawhale' ,'mitsuko' ,'onlyprofitbot' ,'spydo' ,'isotonic' ,'brupvoter' ,'postdoctor' ,'luckyvotes' ,'therising' ,'inciter' ,'redlambo' ,'shares' ,'nado.bot' ,'bid4joy' ,'voterunner' ,'steembloggers' ,'upmewhale' ,'mercurybot' ,'smartsteem' ,'postpromoter' ,'upme' ,'msp-bidbot' ,'aksdwi' ,'pushup' ,'appreciator' ,'sneaky-ninja' ,'lovejuice' ,'minnowhelper' ,'boomerang' ,'buildawhale')"]),    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),    #"Replaced Value" = Table.ReplaceValue(#"Changed Type","VESTS","",Replacer.ReplaceText,{"reward"}),    #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"reward", type number}}),    #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"reward", "reward VESTS"}})in    #"Renamed Columns"

M Code for  Total Curation rewards

let    Source = Sql.Database("vip.steemsql.com", "DBSteem", [Query="SELECT#(lf)reward,#(lf)timestamp,#(lf)curator#(lf)FROM VOCurationRewards (NOLOCK)#(lf)Where timestamp >= CONVERT(DATE,'2018-01-01')             and         timestamp< CONVERT(DATE,'2018-07-01')#(lf)"]),    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),    #"Replaced Value" = Table.ReplaceValue(#"Changed Type","VESTS","",Replacer.ReplaceText,{"reward"}),    #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"reward", type number}}),    #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"reward", "reward VESTS"}})in    #"Renamed Columns"
Sort:  

Hi @paulag, I am now following and upvoting you (again!) from the morphed MAP Trail. Although not strictly curation-based, I feel that much of the data analysis is very useful in setting the context of curation work.

Standard intro now follows.....


You have received an upvote (from @rycharde) and a resteem (from @accelerator) as part of the new MAP Trail initiative to support curators.
You can see your entry here.
You have been added to the Fanbase on SteemAuto and will be supported with further upvotes.
You are also being followed by @accelerator and may receive further upvotes when your article is added to another of our "curated curations" posts. Delegated SP is also available on a weekly basis.
All of this is free and part of MAP's mission to support quality content creators by supporting curators.
You may help support the MAP Curator Trail by either upvoting, resteeming or delegating to @accelerator...
... or just upvoting this comment :-)

@paulag thank you yet again for a great analysis. I really appreciate how you show how you did it. That is so helpful for others who are learning the platform and you have my $0.01.

I am the person paulag quoted. I'll explain why I came to that strategy so you can all discuss.

In fact I decided to make a post of it. I won’t use bid bots on that post so we can see what happens.

Great work, @paulag!
The concept of powering down in order to be able to buy more votes feels somehow strange to me. That actually says a lot about the situation on Steem. 10% of all Steem earnings going to bots doesn't seem very much. If I had to guess, I would have probably given a higher number. I'm surprised to see that the bots make almost 30% of all curations rewards! By vote value, they make up around 25-30% of all votes. Given that votes before 30 mins give a share of the curation rewards to the author and later votes 'lose' some curation rewards to previous voters, making it to almost 30% is remarkable in this context!

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? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Nice detailed work and interesting that folks are powering down to use bidbots.Thats also a huge portion of the curation reward pool.

30% of curation going to bidbots is sickening. Not exactly a "bootstrapping" experience here anymore I guess.

Oh, Unless those boots are wearing boots..


source

A travesty. Where they once had to do work to earn curation, now they don't need to do any work, as it's all automated and they reap the curation rewards that others pay for them to get. They used to curate freely. Now they make money selling what they used to do for free as was part of the original design of the platform :(

Most bidbots also accept transfers in STEEM. Have these been included in your data, perhaps converted to SBD?

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

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

Vote for Utopian Witness!

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

Award for the number of posts published

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - The results, the winners and the prizes

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 60961.08
ETH 2363.44
USDT 1.00
SBD 2.52