MinnowBooster STEEM Power Leasing Service Analysis and Independent Audit

in #steem6 years ago (edited)

MinnowBooster has been around for sometime now and more recently we have seen it replaced with Dlease.io. The idea is that STEEMPower holders can delegate out their STEEMPower and earn a passive income, hopefully attracting new investors to hold Steem Power. 

Dlease.io currently shows an Average Net APR: 16.30 % on their website, which is a nice passive income and with no risk to bad debts.  For those involved in cryptocurrencies this could be viewed as a far less risky growth strategy over trading.

This analysis was suggested to me, as an independent review by @thecryptodrive, one of the MinnoBooster founders.

When I started looking at the MinnowBooster leasing data on the blockchain, it became very obvious that tracing things from the blockchain data alone would be extremely difficult. It would involve splitting text memos and a serious amount of back tracking and time.  So, a different approach was necessary to carry out an analysis other than starting with the blockchain data.

MinnowBooster supplied me with 3 CSV files of data for the period 1st Dec to 28th Feb

1. Expire lease

2. Live leases at end of period

3. Unfilled leases

The expired lease file was combined with the live lease at end of period to get a table of all active leases within the period.  These files were used for the basis of the Analysis and then an audit was carried out against the blockchain records.

The Analysis

This analysis was carried out on data from 1st Dec 18 to 28th Feb 19.  It is worth pointing out during this time period, STEEM was seeing a two year low price and the market was very quiet.  This would have a direct impact on both the number of leases and the APR as there was such a squeeze of the market.

Lease Activity 

At the start of the 3-month period there were 1809 leases in operation, these leases had a value of 1,654,869 SP.  During the 3 months 1913 new leases with a value of 1,590,975 SP were created and 2158 leases with a value of 1,775,558 expired.  On 28th Feb 1564 leases were in operation with a to a value of 1,470,286 SP.

 

Zooming in on the chart above, on the left we have count details of the number of leases per month.  We can see Jan created the highest new leases in a month with 666. We can also see that for Jan, 809 leases expired giving a net movement of -143 leases in operation for the month. 

On the right we can see the value of these new and expired leases in Steem Power.  Although Jan had the highest number of new leases, it has the lowest new lease value of 0.52M, where as the expired lease for Jan was 0.60M SP.

The highest delegation given in Dec was 14,008SP and the lowest was 15.  The average delegation amount for December was 852 SP and the median 283 SP.

In Dec there were 149 leasers and 177 leasees, this increases to 167 and 201 respectively by in Jan

 

A quick analysis of the duration of leases show the median term being 12 weeks, the average being 14.47.  The shortest is 1 week or less and the longest lease term was 90 weeks.

APR

Leases that started prior to the reporting period were showing an average APR of 13.7%, with those created in 2018 of a slightly higher APR than those in 2017.  The new leases set up during the reporting period show an average APR of 14.55%.  The average APR of all active leases during the period was 14.14%

Note: See audit notes and audit qualification for details of current APR.

 

The Max ARP made on a lease was over 65%.  We can see this along with the median, average and min APRs made for each month on the chart above.

Further analysis shows the high APR leases are of very low value (0.2% of lease value) and most leases (57.9%) have an APR of between 10%-12%.  This is laid out in the histogram below

Unfilled Leases

In total for the 3 months there were 1899 unfilled orders.  That equates to almost 50% of the number of leases requested, however it only equates to 4.78% of the value of the total lease requests.

 

The high % of unfilled orders was impacted greatly by 1 account. This account place almost 700 low value (less than 2sp) lease requests in a very short period.  Dec and Feb both show an average of between 37% and 39% unfilled lease requests.

Audit Work

The scope of this audit was to ensure transactions as shown in the data supplied by @MinnowBooster were verifiable on the STEEM blockchain and they show a true and fair reflection of the leasing operations.  Audit tests were designed to test the reliability and the completeness of the data provided.  Audit tests were also carried out to test the accuracy of the currently displayed average APR on Dlease.io

Transaction period 1st Dec 18 to 28th Feb 19

Audit Qualification 

Based on the data provided by MinnowBooster, when examined shows a true and fair reflection of the leasing operations carried out by Minnow Booster for the time period audited. 

Base on Sample data taken during the audit it has been determined that the average APR as shown on Dlease.io as of 28 March 2019 of 16.33% is also true and fair.

Audit Tests and working paper notes

Audit test 1 & 2 - Can delegations be traced from MinnowBooster records to the blockchain?

Using the query below to access the blockchain, a record of delegations was extracted to Excel for the above time period.

An additional column (audit test 1) was created to create a lookup column, the formula used was

=delegations_made[@delegator]&delegations_made[@delegatee]&delegations_made[@timestamp]

A lookup column was also created in the leases table using the formula 

=MinnowBooster_theleases[@[name_1]]&MinnowBooster_theleases[@name]&MinnowBooster_theleases[@[created_at]]

These new columns were then used to extract the blockchain transaction number to the leases table.  

=IFNA(VLOOKUP(B2,blockchain!B:H,3,FALSE),"")

From 1913 new leases during the period, this test verified 1882 – leaving unverified of 31

Plausible cause for the discrepancy: On creating the MinnowBooster table, some dates were calculated manually and not included in the raw data. These date calculations were based on weeks duration shown in the MinnowBooster data, however only whole weeks were shown when in fact, some of these may have been part weeks.  Therefore, the lookup columns may not match.

To overcome this a second lookup column (audit 2) was created in the leases data using the formula

=MinnowBooster_theleases[@[name_1]]&MinnowBooster_theleases[@name]&ROUND(I2,0)

And in the blockchain data a lookup column was created using 

=delegations_made[@delegator]&delegations_made[@delegatee]&ROUND(delegations_made[@[vesting_shares]],0)

These new columns were then used to extract the blockchain transaction number to the leases table using

=IF([@[delegation block ref_1]]="",VLOOKUP(A2,blockchain!$A:$D,4,FALSE),[@[delegation block ref_1]])

This test verifies 28 of the 31 remaining transactions.  

These test results satisfy that delegations recorded by MinnowBooster can be traced to the blockchain.

The M code used to extract and transform the data from the blockchain and load to excel was

let
    Source = Sql.Database("vip.steemsql.com", "DBsteem", [Query="select *#(lf)from TxdelegateVestingShares#(lf)where timestamp >= CONVERT(datetime,'12/01/2018')"]),
    #"Filtered Rows1" = Table.SelectRows(Source, each ([delegator] <> "steem")),
    #"Filtered Rows" = Table.SelectRows(#"Filtered Rows1", each ([delegator] <> "steem") and ([vesting_shares] <> 0)),
    #"Changed Type" = Table.TransformColumnTypes(#"Filtered Rows",{{"timestamp", type date}})
in
    #"Changed Type"

Audit test 3 – Can blockchain delegations be verified on MinnowBooster as proof of completion of records?

Using the query below we extracted transfers made by MinnowBooster from the blockchain.  This table was further filtered to return where the memos include the text ‘Your delegation with the id’.  A new column was added – audit test 3 to create a lookup reference.  The formula used was =[@to]&[@[lease to]]&[@timestamp]

A quick count shows 2261 records. This gives a difference of 348 on the number of new leases set up in the period not shown in MinnowBoosters records. This suggesting record supplied to me were not complete.

Using this new lookup column, we now looked up the value in the leases table (audt2_result) which resulted in 376 non match transactions.  These transactions were supplied to MinnowBooster.  After looking further at the database, it appeared that the files sent to me did not include transactions which started in the period of the data, but ended after it, but ended before we ran the analysis.  A new file was supplied which included these missing transactions.

let
    Source = Sql.Database("vip.steemsql.com", "DBsteem", [Query="select *#(lf)from txtransfers#(lf)where [from] in ('MinnowBooster')"]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type", each [timestamp] > #date(2018, 11, 30)),
    #"Filtered Rows" = Table.SelectRows(#"Filtered Rows1", each Text.Contains([memo], "started")),
    #"Inserted Text Between Delimiters" = Table.AddColumn(#"Filtered Rows", "Text Between Delimiters", each Text.BetweenDelimiters([memo], "to ", " "), type text),
    #"Renamed Columns" = Table.RenameColumns(#"Inserted Text Between Delimiters",{{"Text Between Delimiters", "lease to"}}),
    #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","@","",Replacer.ReplaceText,{"lease to"})
in
    #"Replaced Value"

Audit test 4 – Verification of interest repayments and APR

In order to confirm lease interest payments were made, the query below was used to extract transfers made by MinnowBooster from the blockchain.  A new column was added as a lookup.  In the leases table the lookup column from audit test1 was used to extract the total repayment as per the memo.  This was compared to the recorded value as shown in the charts above.

A 10% Difference was found.  MinnowBooster charge is 10% and can account for the difference.

The above APR reported can be adjusted to the below to reflect these charges.

 

 

 

let
    Source = Sql.Database("vip.steemsql.com", "DBsteem", [Query="select *#(lf)from txtransfers#(lf)where [from] in ('MinnowBooster')"]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type", each [timestamp] > #date(2018, 11, 30)),
    #"Filtered Rows" = Table.SelectRows(#"Filtered Rows1", each Text.Contains([memo], "started")),
    #"Inserted Text Between Delimiters" = Table.AddColumn(#"Filtered Rows", "Text Between Delimiters", each Text.BetweenDelimiters([memo], "to ", " "), type text),
    #"Renamed Columns" = Table.RenameColumns(#"Inserted Text Between Delimiters",{{"Text Between Delimiters", "lease to"}}),
    #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","@","",Replacer.ReplaceText,{"lease to"}),
    #"Inserted Text Between Delimiters1" = Table.AddColumn(#"Replaced Value", "Text Between Delimiters", each Text.BetweenDelimiters([memo], " ", " ", 16, 0), type text),
    #"Renamed Columns1" = Table.RenameColumns(#"Inserted Text Between Delimiters1",{{"Text Between Delimiters", "no of repayments"}}),
    #"Inserted Text Between Delimiters2" = Table.AddColumn(#"Renamed Columns1", "Text Between Delimiters", each Text.BetweenDelimiters([memo], " ", " ", 20, 0), type text),
    #"Renamed Columns2" = Table.RenameColumns(#"Inserted Text Between Delimiters2",{{"Text Between Delimiters", "each payment"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns2",{{"each payment", type number}, {"no of repayments", type number}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type1", "Repayment", each [no of repayments]*[each payment])
in
    #"Added Custom"

Audit Test 5: Can we confirm the actual transfers for interest payments are in fact made?

Finally, we filtered the transfers table to include ‘active Marketplace delegations got you a daily’.  A random spot check of amounts paid against the memos returned a 100% confirmation.

This is the M Code used to extract data from the blockchain on payments made.

let
    Source = Sql.Database("vip.steemsql.com", "DBsteem", [Query="select *#(lf)from txtransfers#(lf)where [from] in ('MinnowBooster')"]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"timestamp", type date}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type", each [timestamp] > #date(2018, 11, 30)),
    #"Filtered Rows" = Table.SelectRows(#"Filtered Rows1", each Text.Contains([memo], "payout"))
in
    #"Filtered Rows"


Audit Test 6: Test for current % APR

Although it was expected to see a lower than current APR for the test period due to downward pressure on the market, a sample of data was examined to test the currently reported APR.  this was carried out on data pulled by Audit test 4.  The data was filtered to see leases created in the last week and based on the comments in the memos, which have proven to be reliable from other tests, the average APR for new leases set up tests positive for a higher average than the data in the original time frame. 

Shameless Promotion

Like what we are doing?  Don't forget to vote for @steemcommunity as your steem witness.  You can vote for our witness using SteemConnect here: https://steemconnect.com/sign/account-witness-vote?witness=steemcommunity&approve=1 

Disclaimer.  I am not a financial advisor and by no means has this to be taken as financial advice.

Sort:  

Awesome work and shows the power of the blockchain in provided transparency for all stakeholders! I think @buildteam continues to do a great job and is pioneering the future of what can be done here to attract investors. I wonder how the average APR would look on a time series to see whether Steem price is a factor in creating demand for leases? Thanks for sharing!

I'm sure the average is much higher now since Steem went over 40 cents and SBD back to parity with the USD, it might be closer to 17% as our app shows, personally, I have nothing less than 18% and my average is just shy of 20%.

Congrats you have been selected by the Steemvoter (SV) Guild, keep up the good work and helping make Steem great!

Note: You should receive many guild votes in an hour or so, enjoy!

Nice work :)

Do you think SP delegation the biggest business on the blockchain?

Part of me wants to promote this nice APR to attract investors, I wonder if I'd think the same if the delegates were analysed to find out what they'd done with their new found power?

DLease is a great way to attract external financially oriented investors, we are starting a big drive for that, as an example we issued a Press Release on Coinidol - https://coinidol.com/offering-passive-returns/ great for Steem exposure. Regarding SM being bigger I’m not so sure, on number of users yes but on turnover volume we have facilitated 20 Million SP in leases since mid 2017 so that’s a pretty big figure, when Steem was at its peak the total lease to date leasebook value was worth upwards of $50 million dollars.

Those are big figures.

Ideally, we'd want the leases to be taken up by businesses wishing to promote a product or service, who can then reward others for helping out. It's similar to what oracle-d are working on, except their aim is to get the businesses themselves to invest in SP. I can see a mix of both being positive in the long run. Cheers.

Yes definitely, this is a great way for businesses and apps to get involved in Steem without having a massive barrier to entry Steem Power cost wise, leasing will be even more crucial when Steem prices soar and attaining Steem become more expensive. Thanks for the great discussion and have a nice day!

the problem is until SBD's get put on markets like Kucoin, Bitrix, Changely, Huboi and Binance, the use of the MinnowBooster / Dlease market are being stunted..... If you offer SBD's for lease payments you might find off Blockchain investors willing to Lease because it is the same as selling Currency pair contract with a tethered fiat.

So an external investor wants to make 16% fixed on his USD investment, look at the 2 scenerios.

Case 1 (present) he buys Steem and leases it out....and over the lease as he gets his payments he has to immediately sell his received Steem to prevent lose from market fluctations. A real headache and if the Price of Steem goes down he's screwed.

Case 2: The investor buys steem and immediately leases it out for a specific amount of SBDs which are based on the spot prices of steem vs sbd at time of contract signing. Over the course of the lease he receives his payments in equal increments OF SBDs, since SBDs are tethered roughly to $1 USD he makes his profit of roughly 16% guaranteed.

This is what investors want, not to be rolling the dice on Leases.

It also has 2 additional added benefits:

  1. Authors are being paid in SBD for the Liquid half of the votes at present, they then do not need to go to an exchange and pay the fees for conversion.
  2. Off site advertisers, who wish to promote their businesses through viral marketing like restaurants, clubs, bands, shows, can take their budgeted advertising expenditures for a period (i.e 6 months, a year) and just buy SBDs, know what they are worth and that they won't lose value with it sitting in an account and then use it to Purchase leases to promote their business over time.

This is the by far the biggest problem with the Leasing system right now. And couple of the largest clients we have been working to onboard have expressed these specific concerns with our the Steeminati. We are talking small companies willing to come in with 5-10k budgets for the year who realize that to get onto to the trending pages for their product launches they need to leverage other peoples powered up Steem.

That's not a bad idea, we have discussed being able to pay for leases with SBD and other crypto, but didn't think of lessors being paid in SBD, that would just be a conversion on the internal market, Minnowbooster already does that, it is just a matter of creating a user settings page on DLease and making than an option. Thanks for the idea.

I think steemmonsters is bigger :-)
The APR is a solid way to attract new investors, not everyone that comes to steem want to create content. yes we also need more content consumers but likewise with investors.
As for the delegates, well thats a different story. there are many communities using this service to support their community which is good. I havent looked at the ugly.

I think steemmonsters is bigger :-)

Maybe, tough to get a figure on all delegations, bots, public, and private though. I would say more STEEM has changed hands this way, and no, I'm not offering to calculate :P

there are many communities using this service to support their community which is good.

I know friendsofgondor are, and maybe qurator/sbi/makeawhale?

I haven't looked at the ugly.

This keeps many abuse services in work!

Wow, such an awesome post. Thank you for sharing!

This was shared in a perfect time as I'm looking into the possibilities of leasing Steem Power to improve the Minnow-ASAP project.

I know that I'll most likely end up with a loss, especially as the Steem Power would be used to grow others... But I haven't felt really comfortable with a loss of ~60%, which have seemed to be the only prices I've been able to come up with so far. That said, I'm a total novice in this area, so I'm glad you gave me some details.

  • DLease seems like a good place to start.

Cheers!

It'll definitely be a loss unless you are 100% self-voting, perhaps even that isn't profitable these days.

If you do lease the best plan is to make a big song and dance about it, but I think even that wont capture much attention at present.

There are also other reasons to lease SP than purely profit, such as having enough resource credits to claim and create Steem accounts of send bulk memos. As an example we had 10k SP on an account snd it took us a week to send memos to 26k Steem acccounts, that includes time to recharge RC’s, if we had more SP it would have been faster, less SP and would have taken longer. With SP you can also attract users to engage on your post, for example we created a TokenBB forum and did a call to action for users to report bugs and feature requests and we would upvote their feedback, this made for nice engagement and great beta testing.

True, but most of the above doesn't require delegation to another account.

Delegations are used to:

  • fuel bots
  • create accounts (which are currently worth... ? - I give them away for free)
  • send spam
  • self-vote like a mo fo

With SP you can also attract users to engage on your post...

Yep, they will arrive, for an up-vote or two, and when the delegation ends, tumbleweed.

I'm not knocking your service, the audit shows all is well. And, I do think that delegation for large investors is perhaps something that should be promoted outside of the ecosystem - at least they are invested.

If you run an app u may need to claim a greater amount of free accounts, startup apps may also need SP to function, new apps to Steem may not have a high SP holding to start, yes its true that users arrive for a vote or two but that is the general psychology of the retail market nowadays, people have so many shiney new things to explore on the internet, they rarely stick to one thing, for us the value we extracted in feature requests and bug finds were well worth it.

I took a look at account claims a few months ago and it seems there is no shortage of accounts for most of the main apps, at present. If/when demand outstrips supply, leasing from a service like MB could certainly be an approach to take. And if this shortage starts to happen, it wont be just you guys that are 'in business' I hope! :D

Established apps have loads of SP for claiming, I guess I was talking more about new apps.

"It'll definitely be a loss unless you are 100% self-voting"

Yeah, I've realized that. Unfortunately, it doesn't seem to be such a good investment if your plan is to grow others. I mean, judging by the numbers I got previous to this article, I would've lost about 60%, perhaps even a bit more than that... And for a delegation of, let's say 25K, it just doesn't work.

Another story if I had hundreds of thousands of Steem Power already. I wouldn't mind losing that amount for a few weeks, a month or two, as I knew I would be able to grow my account rapidly again afterwards. In my case though, it would probably take me about a year to fully recover...

It's really sad, but I'm glad there are services like this, and that some people out there are able to turn them into good use.

Good ways to grow others:

  • Resteems
  • Submit to curie/ocd/c-squared
  • Talk about them in your own posts
  • Link to their relevant posts in the comments of the posts of other (larger) accounts
  • Send them to our leagues! :D

These are obviously great ways, but not at all what I have in mind for my project. :)

The road will probably be longer than I anticipated at first, but I'll reach the goal with time. I'm definitely not willing to give up this quickly. Not a chance. I'll just put my thinking cap on and figure out another, more sustainable solution.

Steem-ua? Get them to post via busy.org each day? umm, SBI's, concentrated voting (at least you get some curation).

Turn them into awesome Steemians who can attract larger votes :D

16% is a good Return for an investment.
If Steem could move more into a good investment platform and have investors this would cause a rapid change for the good

Hi @paulag!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 7.016 which ranks you at #89 across all Steem accounts.
Your rank has not changed in the last three days.

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

Evaluation of your UA score:
  • Your follower network is great!
  • The readers appreciate your great work!
  • Great user engagement! You rock!

Feel free to join our @steem-ua Discord server

Interesting Honestly forgot about the leasing on minnowbooster

my steem delegation expired but i dont get the steempower back, been waiting 2 weeks now :-(

Am i doing something wrong? can someone help?

BOOM !! Have a great weekend (_:

If you give your SP away you still have to vote what you like/find good content?

Why does a lease expire?

Posted using Partiko Android

yes if you give away your sp you dont have anything to vote with. Those that do this tend to be more investor type than blogger and content creator type