How does DeFiChain handle stock splits or merges?
A company can opt to split its stocks when it deems the price of a single share too high. For example, in an N for 1 split, the number of shares you own would grow by a factor of N, but the price of one share would then only be 1/N of the old price pre-split. In a split, the number of outstanding shares changes but the market capitalization remains constant — as well as the total value of your shares. Lowering the per-share price makes the stock affordable for a larger audience.
Conversely, there is also a merge or reverse split where multiple shares are merged into one.
For decentralized stocks, a high price is no problem for investors since you can buy arbitrary fractions of a share whereas at traditional stock exchanges you can only buy complete (and hence integral numbers of) shares. Still we need a mechanism to also conduct such a split for the decentralized version of the stock so that the price of the decentralized stock can match that of the “real” one.
Both Alphabet and Amazon have recently announced stock splits — 20 for 1 in both cases — and Amazon is going to split very soon on June 3. Since DeFiChain has decentralized versions of both (dGOOGL and dAMZN), we need a solution on how those are going to be handled. Prasanna explained the mechanism in a recent Tech Talk.
The split mechanism on DeFiChain
The next update 3.0.0, which is scheduled for the beginning of June, will contain a split and merge mechanism that consists of several steps:
- The affected stock will be locked for about 12 hours before and after the split. This is a safety mechanism to make sure that all oracles will have incorporated the split information before trading resumes.
Those times will be configurable via governance commands and may be different each time — e.g., depending on the weekday at which the split occurs.
During this time, you will be able to send the token between different addresses, but you will not be able to do anything that involves a price — such as interacting with the DEX pool or minting the token. - Then there will be a split block on which the magic is going to happen: The old token is renamed (by appending a version suffix); e.g., the old pre-split AMZN becomes AMZN/v1. A new token with the old name AMZN but a new token ID is created.
- The old DEX pool is disabled and all liquidity is removed. Then a new pool with the new token is created and the liquidity is added there.
- In all accounts and vaults, each old token is replaced by the correct number of new tokens. E.g., if you owned 1 AMZN before, you will have 20 AMZN after. Your liquidity token balances are also re-calculated with the new amounts.
- All pending future swaps involving the token are recalculated.
So for almost everyone this means just two things: The number of AMZN tokens will suddenly and automatically grow by a factor of 20 at approximately the time when the “real” AMZN stock splits. Around that time, there will be a brief period of a few hours in which you will be unable to trade that token.
This is a very nice and elegant solution that will feel just like a “normal” stock split to us users.
Some more thoughts beyond splits
Of course there are other changes that a stock can undergo except for splits: A company could split into two, a company could be bought by another or it could go private. And I think the split solution we have here puts us in a very good position to deal with those since that same general idea can be applied to other situations.
Note that the following are just my ideas on how we could approach such scenarios. None of this has been implemented so far — which is a good thing since every situation will be different. So we should solve the problems when we have them.
What if a company splits into two?
If a company splits into two publicly traded companies, the share-holders of the original stock usually get stocks of both new companies instead. For example Johnson and Johnson has announced such a split. (We don’t have this on DeFiChain yet, but this could change.)
For such a situation we could adapt the same mechanism but create two new tokens and two new pools instead of just one. In an additional step, we would need to add and adapt the oracles.
What if a company is acquired by another one?
If a company is acquired, your stocks of the company that is bought up are usually exchanged for stocks of the buying company at a certain ratio. On the blockchain, this would come down to some kind of N-for-M split combined with a name change.
What if a company goes private?
We do not have a TWTR pool on DeFiChain. Still the current development around Twitter raises the question what we would do if a company went private.
In such a situation, the tokens and the pool should not cease to exist. However, the oracle price should remain constant from the time the stock is delisted from the stock exchange. Also the block rewards for that pool will automatically go to zero with the next update to the reward distribution since they are calculated depending on volatility and trading volume, both of which will go towards zero. Given that this will leave us with a pool with no block rewards and minimal trading, people will most likely withdraw all liquidity from that pool, pay back all loans and either sell their remaining shares or keep them in case the company will go public again at some point in the future.
So in summary, I think that (except for keeping the oracles constant) we would not need to do anything in this case.
What about stock tokens that leave the chain?
For me the one question that remains open until here is how we are going to handle stocks that leave the chain.
For example, with the new DeFiChain bridge it may in the future be possible to also send stock tokens to the BNB chain. Of course the tokens on the other chain will not automatically be split when those on the DeFiChain do. Such situations are going to be messy by definition, but I think this could be resolved.
We would need to do the same on the other chain that we do on the DeFiChain blockchain: Create a new token with a new ID and if there are liquidity pools, we will also need to create new instances of those.
Since we cannot automatically swap the old token to the new, it will likely be necessary to get the tokens back onto DeFiChain or at least into the bridge for the split. So we will most probably have both a split and an un-split version for a while, but the two types of pools can be arbitraged (but only in one direction towards the new pool) and so over time everything should move into the new pool with the split tokens.