BitShares Forum

Main => General Discussion => Topic started by: theoretical on September 18, 2014, 05:34:05 pm

Title: Yield suggestion: Pay constant 0.01% rate at variable time intervals
Post by: theoretical on September 18, 2014, 05:34:05 pm

The current yield computation is very crude.  The approximations result in a very low yield compared to "exact" computations.

If we pay 0.01% to everybody whenever the yield fund accumulates to a level where we can afford to do so, what would happen?

I have a feeling this would be very easy to implement and keep the level of network equity in the yield fund to a minimum [1] [2].  I think I have a solution to the compounding problem with this scheme as well, but that'll be a separate post.

[1] By "network equity in the yield fund," I mean "if everyone asked for their yield immediately, how much would be left over?"  I think answer to this question will always be "most of the yield fund" in the current implementation.  Meaning we hold BitUSD potential back because we could afford to pay more interest (which would attract more investors).  And we might be setting the stage for a supply-side margin crisis if shorts need to buy BitUSD to cover, but can't because too much BitUSD is tied up in the yield fund.

[2] If we think it's important to keep a reserve for macro-economic purposes other than yield, like buying up underwater shorts, we can simply set up a separate fund, and explicitly set (an algorithm to determine) its desired balance level (e.g. 10% of BitUSD in circulation).  Then divert fee income into that "macro fund" when the fund is below the desired balance, and "change the sign" of this flow when the fund's balance is above the desired level (pay a portion of the fund's balance as fees).
Title: Re: Yield suggestion: Pay constant 0.01% rate at variable time intervals
Post by: vikram on September 19, 2014, 04:06:28 pm
I haven't had time to go through your other (slightly older) thread yet, but how does it relate? https://bitsharestalk.org/index.php?topic=8660.msg112539#msg112539
Title: Re: Yield suggestion: Pay constant 0.01% rate at variable time intervals
Post by: bytemaster on September 19, 2014, 05:00:30 pm
Yield fund is there to average out fees over 1 year.  If everyone waited 12 months and then cashed out then the yield fund would be near 0. 
Title: Re: Yield suggestion: Pay constant 0.01% rate at variable time intervals
Post by: theoretical on September 19, 2014, 10:29:51 pm
Yield fund is there to average out fees over 1 year.  If everyone waited 12 months and then cashed out then the yield fund would be near 0. 

This line of thinking makes the assumption that BitUSD will have no economic use other than holding and cashing out once a year at the max yield.   (It scarcely needs to be said that this assumption is wildly unrealistic and contrary to the desired outcome of the whole BitUSD experiment, and defies both common sense and the observed behavior of cryptocoins in general.)

A much more realistic assumption is that there will be a variety of balances with ages evenly spread out.  As a consequence, there will always be some "untouchable BitUSD" in the yield fund which would theoretically be available after a year if nobody moved their balances, but which (in practice) would never be available because (in practice) people move balances all the time.

If we want to "buffer" irregular fee income, that could be equally well achieved by putting income into a "buffer fund" and then either sending a fixed percentage of the buffer fund to the yield fund every block (so absent future fee income it would shrink exponentially with a predictable half-life), or sending the entire buffer fund to the yield fund when it exceeds a certain threshold.  The percentage method implies a policy objective of catering to investors who prefer the yield to have a steady rate of return; the whole-buffer-fund method implies a policy objective of getting around engineering issues involving non-negligible rounding errors and quantization effects that occur when yield payments are very small.  Either objective can be achieved with much smaller untouchable BitUSD than an enormous 365-day stockpile!

I haven't had time to go through your other (slightly older) thread yet, but how does it relate? https://bitsharestalk.org/index.php?topic=8660.msg112539#msg112539

My view is that the current implementation results in a large amount of untouchable BitUSD in the yield fund, mainly because keeping the amount of untouchable BitUSD small without risking insolvency is a hard technical / engineering problem.  My previous thread discussed several approaches to solving that engineering problem.  This thread's idea solves the same engineering problem as the previous thread, but I think this thread's solution is far easier to understand and implement.