Author Topic: Good accounting's important _or_ If BTSX is a DAC, where's the balance sheet?  (Read 2275 times)

0 Members and 1 Guest are viewing this topic.

Offline bytemaster

Assuming 2 different longs that each control 50% of the USD supply the first long cashes on on the last day... he would hold 50/110 of the USD and get a yield of $4.54 and the supply would now be 55.46 and the yield fund would have 5.46 in it.   The second long cashes out owning 50/55.46 of the USD supply and would receive a yield of $4.92... leaving the yield fund at $0.53 and the USD supply at $0.53 and the USD debt at $0.53. 

Using 110 as the divisor is the first accounting problem I see; the divisor should be 100.  A divisor of 110 would be based on an (incorrect) assumption that the dollars in the yield fund would themselves be eligible to receive yield.  You should compute the investor's share of the yield based on the total of all BitUSD held by investors (50 + 50 = 100), not investors plus network (50 + 50 + 10 = 110).  Then, after the first long's BitUSD plus yield are burned in the partial cover operation, the second long would hold 100% of the supply and receive 100% of the yield fund; each investor would have gotten exactly $5 in yield, which is the "right" behavior.

The second accounting problem, which is actually the complaint I had in mind, is based on the first long transferring his BitUSD to himself (or another person), collecting the yield and having the BitUSD remain in circulation.  My understanding is, if the first long transfers the BitUSD to himself, he would get $4.54 of the yield.  The supply would still be $110 (assuming fees are too small to matter).  The first long would hold 54.54 / 110 of the supply and the second long would hold 50 / 110 of the supply, but the yield fund is down to $4.56.  So the second long would get 50 / 110 of $4.56, or $2.07 in yield.  The remaining $3.37 in the yield fund is untouchable BitUSD, and it is a very substantial percentage of the fund.  Basically the problem is giving the first investor 50 / 110 of the equity in the fund both before and after the distribution.  The extra equity you're giving to the first long has to come from somewhere, and it comes from the second long.

I can see the argument for not counting USD in yield fund and have implemented and scheduled that update for the next hard fork. 

There is also the fact that there is substantial USD in bids/asks that does not qualify for yield. 

So from a game theory perspective you make the most money by "claiming yield before a large balance claims its yield"... but you don't know when that will be.  You also make the most yield by claiming it prior to an increase in the supply... but you also don't know when that will be.

Yield is being claimed constantly and accumulated constantly... on average it works out and some of it has to do with luck and timing.  In extreme cases like the 2 user case... who ever blinks first gets the most.    That would equal 50% of the USD claiming their yield all at once just before you wanted to claim yours while no new yield accumulated.   Assuming the rate of adding new yield balances equals the rate of payouts then both users would end up with the same yield.   If the rate of payouts exceeds the rate of new yield then it makes sense to either wait until the situation changes (rate of new yield exceeds the rate of payouts) or be the first in line.  But... the percent you can claim by rushing early is less 80% vs waiting 100%... so you can do attempt to guess when the best time is or you can just "accept" the average will vary and that claiming yield at the same time as everyone else will give you worse results than claiming yield when no one else is claiming it. 

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline theoretical

Assuming 2 different longs that each control 50% of the USD supply the first long cashes on on the last day... he would hold 50/110 of the USD and get a yield of $4.54 and the supply would now be 55.46 and the yield fund would have 5.46 in it.   The second long cashes out owning 50/55.46 of the USD supply and would receive a yield of $4.92... leaving the yield fund at $0.53 and the USD supply at $0.53 and the USD debt at $0.53. 

Using 110 as the divisor is the first accounting problem I see; the divisor should be 100.  A divisor of 110 would be based on an (incorrect) assumption that the dollars in the yield fund would themselves be eligible to receive yield.  You should compute the investor's share of the yield based on the total of all BitUSD held by investors (50 + 50 = 100), not investors plus network (50 + 50 + 10 = 110).  Then, after the first long's BitUSD plus yield are burned in the partial cover operation, the second long would hold 100% of the supply and receive 100% of the yield fund; each investor would have gotten exactly $5 in yield, which is the "right" behavior.

The second accounting problem, which is actually the complaint I had in mind, is based on the first long transferring his BitUSD to himself (or another person), collecting the yield and having the BitUSD remain in circulation.  My understanding is, if the first long transfers the BitUSD to himself, he would get $4.54 of the yield.  The supply would still be $110 (assuming fees are too small to matter).  The first long would hold 54.54 / 110 of the supply and the second long would hold 50 / 110 of the supply, but the yield fund is down to $4.56.  So the second long would get 50 / 110 of $4.56, or $2.07 in yield.  The remaining $3.37 in the yield fund is untouchable BitUSD, and it is a very substantial percentage of the fund.  Basically the problem is giving the first investor 50 / 110 of the equity in the fund both before and after the distribution.  The extra equity you're giving to the first long has to come from somewhere, and it comes from the second long.
BTS- theoretical / PTS- PZxpdC8RqWsdU3pVJeobZY7JFKVPfNpy5z / BTC- 1NfGejohzoVGffAD1CnCRgo9vApjCU2viY / the delegate formerly known as drltc / Nothing said on these forums is intended to be legally binding / All opinions are my own unless otherwise noted / Take action due to my posts at your own risk

Offline oldman

  • Hero Member
  • *****
  • Posts: 556
    • View Profile
The Bitshares client could/should have a living ledger that follows GAAP best practices, is similar (or better) to what any corporation would need to produce for income tax filings and presents in a way that is friendly and easy to understand.

This is yet another opportunity to revolutionize the banking industry: a completely transparent financial reporting system that shows live metrics and provides easy access to proof of reserves etc.

Think of client tab labelled 'Accounting' or 'Balance Sheet' which you open up to find real-time stats on P&L, cash flows, burn rates, yield, reserve levels, etc. A dashboard. 

Given the current climate of insolvent, fractional banks and the absurb levels of accounting fraud and obfuscation this feature might be a surprising strong draw for more sophisticated users/investors.

It might also catch serious media attention because... why can't all corporations do this? What do they have to hide?

Really, why is it so hard to understand the financial health of the company you trust with your money?

Great marketing opportunity:

"What is your bank hiding from you?"

"It's 1am... do you know where your money is?"

"What are your bank's unknown unknowns?"

"Got reserve?"

Offline bytemaster

If on average shorts are paying 10% APR... then after 1 year assuming (cover, reshort) then the BitUSD supply will have grown by 10% and that 10% would be in the yield fund and represent 1/11 of the supply. 

Assuming all "longs" held for a full year, then they would each be entitled to an equal percent of the supply and could cash out, sell to the shorts, the shorts could cover and pay interest, and the supply would be back to 0.

That of course assumes one user owning all the USD and one short covering + reshorting against himself to keep things "simple".

Now you we want to mix in different holding lengths for different users... for now lets keep it simple and have just 1 short like the previous example and many longs.

Assuming 2 different longs that each control 50% of the USD supply the first long cashes on on the last day... he would hold 50/110 of the USD and get a yield of $4.54 and the supply would now be 55.46 and the yield fund would have 5.46 in it.   The second long cashes out owning 50/55.46 of the USD supply and would receive a yield of $4.92... leaving the yield fund at $0.53 and the USD supply at $0.53 and the USD debt at $0.53. 

So what happened... the guy who waited longest actually got more than the one who cashed out early even thought they both waited until the last day of the year and cashed out in the same block.   This is of course a simplified model.

So what happens when regular users cash out every month rather than waiting until the end of the year??? Well, they only get 80% of the yield and increase the yield of those holding longer by leaving more in the yield fund. 

So you can say that the yield fund grows at the average rate of interest paid by all shorts.  The yield fund shrinks at the average rate funds being claimed... which maxes out at those holding for 1 year or more.  Either way those who hold for a year make more than the average rate of interest paid by all of the shorts and those who hold for shorter periods of time make less than the average rate paid to shorts. 

So the question becomes can the yield fund grow faster than it can be claimed and gradually grow due to mis-matches between how funds are paid in and when they are paid out?   I don't think so because at any time all trading can stop all longs can hold for 1 year, cash out into all shorts on one block and the yield fund would be essentially 0.   In my example there was a 5% discrepancy... and it would take another year to claim that last $0.53...   so I guess there is leakage that will cause the yield fund to grow slightly over time.   

For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline theoretical

The mathematics on the yield fund are simple... it will grow for 1 year and will always contain about 1 years worth of fees.

I think in order to make this assertion, you have to assume that fee income is constant and yield claims are randomly distributed.  Obviously, in the real world fee growth is likely when we're in a growth stage, and there may big lumps of claims from big price movements or news events.  Agent86 also pointed out that claiming yield is non-commutative...if everyone tries to claim their yield on the same day, then the last guy who claims will see a much lower yield than the first guy who claims.  (I realized this independently, but he beat me to publicly describing the phenomenon, so I give him the credit for this one.)

Why must it grow for a year rather than "pay out now"?  Because we reward people for holding USD

You can reward them more by paying out now.

and you cannot "pay out now" to every that would be untenable. 

As I've said before multiple times -- just have a "distribution event" whenever the yield fund grows big enough to pay 0.01% to everybody.  You don't actually go through every balance in the distribution event, rather you just record the block number of the event.  Then when a balance moves you can easily check how many distribution events happened since the last time it moved, and determine yield as 0.01% * balance_amount * number_of_distribution_events.

If some sort of yield curve is desirable that pays older BitUSD more than newer BitUSD, that's fairly simple too [1].

How big must the "reserve fund be" for black swan protection... it doesn't matter...

It does matter.  If it's too small, then it doesn't actually protect against what it claims to protect against.  If it's too large, then we have better uses for the extra BitUSD:  Increasing yield, auctioning it off as interest in a BitBond market to tie up much larger amounts of investor capital, or buying and burning BTSX.

"Too small" or "too large" is a judgment that can only be made by adopting some risk model that places a probability distribution on black swan movements of various sizes.  We need some "policy model" that determines how much we keep on hand.

But if BitUSD investors have transparency about the amount of funds that would be immediately available to make them whole in a black swan event, they are free to apply their own risk models, decide whether the black swan reserve policy is adequate, and invest accordingly.

assuming the average rate paid by shorts is 10% APR then the reserve fund will be 10%+ of BitUSD out there.

I'd like to see a more careful analysis of why this would be the case.

Considering shorts constantly cover every 30 days.... in the event of a black swan even a large percentage of the USD will be covered by collateral...

Which is why I think a year's worth of income, especially if shorts are being charged interest, will grossly overcapitalize the FDIC fund.  A black swan event doesn't mean every BitUSD in existence will suddenly be totally unbacked and need bought up; the majority of them will still be backed by collateral.

thus 10% left over simply means yields on BitUSD get reset to 0 for a while. 

With immediate yield payouts, this reset can be made to last exactly as long as it needs to last to cover any shortfall in the FDIC fund.  Then we can just put 50% brakes on yield growth to recapitalize the FDIC fund.  I think the current yield computation would require at least a year for yield to get fully up to steam after a reset, but again, any model would require assumptions about the rate of fee income and distribution of claim dates.

The funds don't disappear into a black hole..

The funds do "disappear," at least temporarily.  If all of the longs and shorts got together and decided to unwind their positions, they'd be unable to do so because:

- Some of the BitUSD in the yield fund would be unclaimable
- The first claims on the yield fund would reduce later claims' yield
- Short interest accrued but not paid into the yield fund would be untouchable

but I can easily see some benefit for tracking income vs expenses each block.

I'm glad we agree that transparent accounting of the network's use of investor funds is important.

I also think there is great value in being able to explicitly control the amount of network income devoted to various purposes.

[1] Conceptually divide funds into 365 "buckets" based on age in days.  Keep track of how many BitUSD are in each bucket.  When BitUSD balance moves, reset it to bucket 0; at midnight UTC, increase every bucket +1, add a new empty 0 bucket, and dump the contents of bucket #365 into bucket #364.  Then each bucket has its own yield fund that pays out at 0.01%.  Each bucket's fund gets a share of yield proportional to its contents times a multiplier based on its bucket ID (the multipliers determine the yield curve).  If dividing every fee into 365 buckets as it comes in would be too much work or introduce too much rounding error, you could just buffer a day's worth of income and then distribute it when you rotate the buckets.
BTS- theoretical / PTS- PZxpdC8RqWsdU3pVJeobZY7JFKVPfNpy5z / BTC- 1NfGejohzoVGffAD1CnCRgo9vApjCU2viY / the delegate formerly known as drltc / Nothing said on these forums is intended to be legally binding / All opinions are my own unless otherwise noted / Take action due to my posts at your own risk

Offline bytemaster

The mathematics on the yield fund are simple... it will grow for 1 year and will always contain about 1 years worth of fees.

Why must it grow for a year rather than "pay out now"?  Because we reward people for holding USD and you cannot "pay out now" to every that would be untenable. 

How big must the "reserve fund be" for black swan protection... it doesn't matter...  assuming the average rate paid by shorts is 10% APR then the reserve fund will be 10%+ of BitUSD out there.    Considering shorts constantly cover every 30 days.... in the event of a black swan even a large percentage of the USD will be covered by collateral...thus 10% left over simply means yields on BitUSD get reset to 0 for a while. 

The funds don't disappear into a black hole.. but I can easily see some benefit for tracking income vs expenses each block. 
For the latest updates checkout my blog: http://bytemaster.bitshares.org
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline theoretical


Also, @bytemaster if you're reading this -- please contact me privately.  I've tried to reach you via PM and email, but haven't received any reply.  If you're still thinking about it, I'd appreciate at least knowing my message hasn't gotten caught in a spam filter.  Thanks
BTS- theoretical / PTS- PZxpdC8RqWsdU3pVJeobZY7JFKVPfNpy5z / BTC- 1NfGejohzoVGffAD1CnCRgo9vApjCU2viY / the delegate formerly known as drltc / Nothing said on these forums is intended to be legally binding / All opinions are my own unless otherwise noted / Take action due to my posts at your own risk

Offline theoretical

We are operating BTSX as a DAC banking firm.  Human participants include depositors (BitAsset holders), shareholders (BTSX holders), and management (delegates).  AFAICT no human has access to a complete and reliable income statement or balance sheet for two of the DAC's main activities (BitAsset yield and interest on shorts; the latter has not yet been launched).  Why this makes me uneasy should be obvious.

To be clear, I do not think BTSX is in danger of insolvency anytime soon [1].  Rather, I think the network is tying up more funds than it needs to, for longer periods than it needs to, with little transparency as to the amount or intended purpose of the funds which are tied up [2] [3].

Sending a bunch of BitUSD into an accounting rabbit hole for a year is not the best use of that BitUSD, compared to the alternatives:  Paying to longs as yield, auctioning off as interest in a BitBond market to tie up a much larger sum of investor BitUSD, or buying up and burning BTSX.

I believe there are two justifications for letting this situation happen:

- It is desirable to hold some BitUSD in reserve for policy purposes, such as buffering yields to make them less "lumpy" in order to cater to BitAsset holders' preferences for stable, accurate yield projections (and defeat certain technical trading strategies), or an FDIC fund to get rid of underwater shorts.
- Implementation is done at the "micro-level" of individual long balances and short positions.  Exact "macro-level" computations which maintain continuously updated sums of the micro-level activity of O(n) positions undergoing O(m) updates using O(m*log(n)) or less computational resources, is a hard technical engineering problem.

To these I would reply:

- Under the current implementation, policy funds may end up grossly under- or over-capitalized with respect to how much is needed to achieve their intended objectives.  Regardless of whether we as policymakers decide a sufficient FDIC would be 1%, 5%, 10%, 20%, or 50% of existing BitUSD, it would be an incredible coincidence if the reserve developed by the yield implementation reached an equilibrium near the desired reserve level under most market conditions.  (Unless the yield fund was specifically designed to do so, of course.)
- In various forum posts and whitepapers, I've published macro-level algorithms that solve the engineering problems of how to implement efficient macro-level computations.

[1] The much-discussed case of "black swan" price movements that put too many shorts too far "underwater" is always a possibility, but I won't discuss that further here.

[2] Specifically, there are gross approximations in the yield fund computations that result in an enormous percentage of the yield fund being untouchable -- BitUSD holders could not access most of the fund even if everyone claimed yield in the next block.  Similar approximations are planned for the currently proposed implementation of shorts paying interest to longs.

[3] A while ago I posted somewhere on this forum some back-of-the-envelope calculations about what the amount of untouchable BitUSD may be for the yield fund.  While the amount of untouchable BitUSD could, in principle, be determined from the blockchain, AFAIK nobody has actually done this calculation and published the result.
BTS- theoretical / PTS- PZxpdC8RqWsdU3pVJeobZY7JFKVPfNpy5z / BTC- 1NfGejohzoVGffAD1CnCRgo9vApjCU2viY / the delegate formerly known as drltc / Nothing said on these forums is intended to be legally binding / All opinions are my own unless otherwise noted / Take action due to my posts at your own risk