[Edit May 12: The ideas in this thread have now been superseded by whitepaper here: https://bitsharestalk.org/index.php/topic,15880.0.html]**** SHORT VERSION ****
This post outlines an alternate method of creating a stable, pegged currency, that I believe may have better pegging and liquidity over the current bitAsset approach, with comparable security. As I'm not a developer/coder, I would like for others to comment on the theoretical and technical feasibility, assuming such an approach has not already been analysed in the past. The basic construction is that there is a pool of depositors on one side, that receive tradeable deposit receipts at the feed price (e.g. a BankUSD) in exchange for their BTS, and a pool of borrowers on the other side, which an agent in the middle (I'm loosely calling it a "bank") automatically matches off on each block, at the feed price, according to prioritisation rules on both sides. This negates the need for longs and shorts to meet directly in a price-negotiating market, BankUSD holders can get instant redemption at the feed price (requiring loans to be callable), and all other participants can trade at the feed price subject to some delay. Following up the initial OP idea, I further suggest how all parties may be able to always trade instantly at the feed price (removing the need for matching delays) by having borrowers share in a pool where leverage is able to fluctuate up to some maximum limit.
The OP also contains a suggestion around assets whose main purpose is trading and speculation, being to treat them more like traditional expiring derivatives, rather than requiring fungibility. The thought here is to encourage more trading activity, simpler arbitrage and better liquidity.
[Edit: Mar 29 - My thinking on the bank mechanism evolves through the thread - for example allowing standing orders at a premium or discount to the feed price, and also allowing for the alternative that such features could be incorporated into the current bitAsset market. These are working ideas moreso than a proposal at the moment, depending on feedback.]
*** LONG VERSION ***
I think there are potentially two types of bitAssets - bitCurrencies, and bitTradingAssets. For bitCurrencies, this might include any asset that could conceivably be used in exchange for goods and services, such as bitUSD, bitCNY, bitEUR, bitBTC, bitGOLD etc. For these it is important to have very consistent price-pegging, high liquidity and critically, fungibility.
However other bitAssets may be used primarily for investment and trading exposures, which I denote bitTradingAssets. Examples might be bitDOW, bitAPPL etc. Traders do not care about fungibility. However, they are still concerned with effective pegging and liquidity, and will be willing to move on price for that liquidity.
With that in mind, I think it may be worth separating the implementation approaches for these different types of assets. I wondered about the following approaches:
bitCurrencies, and a BankTo achieve consistent price-pegging, while still allowing fungibility, one approach is fixed price redeemability (for sellers). Via arbitrage such fixed-price redeemability would flow through to strongly pegged prices and liquidity in all external markets where the bitCurrencies trade.
Rather than a bid/offer market for bitAsset/BTS, a centralised entity or agent, on the block-chain, could stand between the pool of longs and the pool of shorts to automatically mediate supply and demand, much as banks today stand between a pool of lenders (depositors) and borrowers. If we would desire deposits to be callable, then loans on the other side must also be callable. Withdrawal prices can then be fixed and immediate.
Alternative matching schema are possible, but here is one way in which transactions might be ordered by the "Bank" for each block:
- Withdrawals are first paid at the price feed from margin calls on loans, new depositors, then from loan repayments, and then from called loans. To guarantee that withdrawals are paid on demand, loans must be callable, beginning with those paying the lowest interest, or factoring in lowest collateral if system collateral is low.
- Remaining margin calls on loans, other loan repayments, and then deposits, are re-lent at the price feed to new borrowers, starting with those offering the highest interest.
- Remaining unfilled orders either side wait in the queue, and get priority in terms of age (depositors) or interest (borrowers).
Interest rates should adjust to mediate lop-sidedness in supply and demand over time, although this will not be immediate. Borrowers might also be able to voluntarily increase their current interest rate or collateral to avoid being called.
This system could be implemented with no bank equity (its merely a facilitator), but there may be some delays in time it takes for depositors, new borrowers or repaying borrowers to be filled, even if they would be prepared to pay to act more urgently. Better mediation of supply and demand might be possible if such excess payment is allowed in certain ways. In any case, it is always possible for people to make use of public markets in the bitAsset elsewhere to fill or hedge their position at an agreeable floating price if they demand more urgent liquidity.
If the bitCurrency were cheap on external exchanges, arbitragers could buy it, and instantly redeem it to make a profit. If it were expensive, arbitragers could wait in the deposit queue with their BTS, and when they receive the bitAsset, sell it externally in exchange for BTS again (or step off the deposit queue if the bitCurrency premium normalises). This should ensure external markets are closely pegged and liquid, subject to some delays that may be experienced on the bank queue.
bitTradingAssets, and a derivatives exchangeI think bitAssets are not yet meeting this need because there are problems with consistent pegging, liquidity, and high collateral requirements for traders. The Bank idea is also not good for bitTradingAssets because there may be delays in getting set when supply and demand is lop-sided, when traders may prefer liquidity, and collateral is still higher than elsewhere.
Traditional derivatives have an expiry date. Given that fungibility is not a requirement of trading assets, I suggest that bitTradingAssets could be created in a similar way, with staggered expiry dates. By having certainty around the convergence of the bitAsset price to the feed price at expiry, this would lead to simpler 2-way arbitrage, helping to keep the price in line with the feed, and tending toward zero at expiry. (The current bitAsset structure creates some practical difficulties for arbitrage). This approach would also facilitate options markets on these assets.
Since these are trading positions, rather than long term stores of value, long term security is not as important as for bitCurrencies. Fractional deposit margining could be used, with frequent margining. Positions could be automatically closed on both sides when the pool on one side is at risk of being insufficient. In extreme black swans, there may be a partial loss on one side, but I think that risk is acceptable here.
If this approach allowed collateralisation by bitCurrencies rather than BTS, I feel it may have even wider appeal. In combination, BitShares would be able to replicate the functionality of existing centralised exchanges trading a wide range of asset types, but without the centralisation risk.
Either of the above ideas could be run under common ownership (all BTS holders) or as UIAs, with different business models and service models being possible.
A lot of things I haven't thought through though, for example price feeds, which the above is highly dependent on, still have lag and accuracy problems