Cryptocurrencies have enabled value to be transferred across borders instantly and very cheaply. The inefficiencies of commercial banks and capital controls by governments have historically made it extremely difficult to move money in and out of certain countries, limiting the amount of economic activity which can happen across borders. These problems are even more pronounced for financial services. For a foreigner to trade US stocks, he would have to go through his local commercial bank or broker who charges exorbitant fees for this 'international service'. Even worse, residents of certain countries (China, India, etc.) are mostly unable to purchase American stocks altogether. In an ideal world, every person in the world should have free access to every single capital market regardless of geography or jurisdiction.
It is extremely unlikely for existing Fortune 500 companies to issue tokenized stocks or revamp their entire cap table just to put it on the blockchain. However, another way of having exposure to something like an Apple stock is to create a synthetic asset that mirrors the price of the Apple stock. This means that if Apple stock goes up by 10%, the holder of the synthetic asset should also expect a 10% increase in their asset value. This is a powerful idea, but the power to issue these synthetic assets needs to be decentralized. If a centralized company creates and sells these assets, they will be incentivized to charge as much fees as possible and also face the risk of being shut down by governments — and we are back to square one. Hence, this must exist as a decentralized protocol.
The big question that ensues is how do we architect said decentralized protocol? What are some of the design choices that should be considered and what are the tradeoffs? This post explores some of the ideas of how to effectively construct a decentralized derivatives protocol to trade stocks on the blockchain.
Any investment is essentially a bet that an asset will provide a positive return. Buying Tesla stock is a bet that the price of Tesla stock will appreciate. Unless you are purchasing stocks for voting rights, making a bet that a stock will go up is indistinguishable from actually owning the underlying stock. If you buy a stock to receive dividends from the company, this is also indistinguishable from making a bet that the company will pay dividends. Hence, one needs to think about effectively constructing a decentralized betting protocol to achieve the same goal. Although Augur is a generalizable betting platform, I believe that creating a brand new protocol which is optimized for betting on off-chain financial assets will be valuable.
The simplest implementation of such a protocol goes as follows:
Person A wants to long 1 Apple share at $1000. Person B wants to short 1 Apple share at $1000. They both enter a contract and agree to terminate if the price of Apple stock moves upwards or downwards by 20%, or in 30 days.
- Person A and Person B posts $200 of collateral (ETH or Stablecoin) to a smart contract
- 30 days pass, an oracle tells the smart contract that Apple is now worth $1100
- Person A receives his $200 of collateral plus $100 of B's collateral
- Person A and Person B posts $200 of collateral (ETH or Stablecoin) to a smart contract
- 2 days pass, an oracle tells the smart contract that Apple has dropped to $800
- Person B receives his collateral plus A's full collateral
In this simple model, we can easily bet on any asset that has a trustworthy data stream which includes stocks, bonds, commodities, and so on. This type of system is one of the ideal use cases of Stablecoins because engaging in such a contract with an asset as volatile as ETH makes it extremely unappealing (if you want to long Apple but short ETH, do you enter the trade?). We can also imagine much more complicated contracts being constructed. For example, Person A can long the dividends issued to 1,000 IBM shares and short the price of 10 IBM shares. This indicates that person A is bullish on the dividends issued by IBM but bearish on the actual stock price, and this information can be captured and expressed as a bet.
The above model requires two people to enter a contract together and terminate the contract together. This requires a whole new set of infrastructure including new types of exchanges and so on. Another alternative to the above model is to create an "inversely tracking token". Instead of waiting for someone else to enter the contract, what if you could go on Binance and simply buy an "inversely tracking ETH" which captures the opposite price movement of Ether? This will allow interesting applications like bundling coins and inversely tracking coins to create tradable sets of 'hedged portfolios'. Although this does not allow for arbitrarily complex bets, it is super easy for users to short cryptocurrencies while staying on their favorite crypto exchanges.
This idea can be implemented in a multitude of ways. Borrowing from other stablecoin projects like Basis or MakerDAO, we can tweak some parameters in their models to create the inverse price movement we desire.
- When the price of the underlying goes up, print more coins to dilute the inverse-coin so it's price falls by the same proportion
- When the price of the underlying goes down, issue bonds to push the price of the inverse-coin upwards
- Have a group of power users lock-up collateral to issue a fixed amount of the inverse-coin. Power-users are required to payback this amount of inverse-coin in the future
- When the price of the underlying goes up, decrease the amount of inverse-coin required to be paid-back by the power users. Power-users are incentivized to pay back their debt and sell the remaining coins on the open market, pushing price downwards
- When the price of the underlying goes down, increase the amount of inverse-coin required to be paid-back. Power-users will buy up the inverse-coin on the open market to pay back their debt, pushing price upwards
1. Oracle + Gas problem
The reliability of the oracles for these decentralized derivatives protocols are paramount. If a malicious attacker is able to sabotage a price feed, he can instantly make the contract hit the price limit and steal the other party's collateral. Augur goes through great lengths with a decentralized oracle solution that relies on reputation to solve this issue. Other approaches like Oraclize or others may be able to diminish the risks of this kind of attack significantly.
However, another more difficult issue is the gas problem with regard to price feeds. For the contract to work as intended, it needs to receive a constant stream of price data from an oracle to check if the parameters set by the contract participants are met. If you set the contract to get the price every 10 minutes, it may miss sudden spikes or dips in price which is unfair to the users. Creators of this protocol will need to architect a way to effectively bring price data onto the smart contract without spamming the blockchain.
Following the Naive Implementation, this will only work with enough liquidity. There is a natural cold-start problem where there is little to no value being early on this protocol. The natural way to resolve this is for the project architect to gather a group of market-makers who are willing to fill every trade and provide liquidity to the system. To attract serious liquidity from market makers, there will need to be a spread between the price of the synthetic asset and the price of the underlying, so that the market makers are able to make money through arbitrage.
3. Price Impact
Assuming the technology works and liquidity is available, what happens when 1 billion retail investors who have never had access to American financial markets start purchasing these synthetic assets? In theory, the synthetic asset market and the underlying market are completely separate and should not have an impact on one another, but when market makers start arbitraging the underlying and the synthetic asset things become weird. What happens when entering a bet on the protocol is cheaper than purchasing the underlying, that investors sell their underlying positions to take synthetic positions? Does that dilute the original stock and drive prices down? These are important open questions that one must think about when building such a protocol.
Outlined are two moderately simple ways of building a decentralized derivatives protocol, but more thought needs to go into addressing the challenges because they could have a very real impact on financial markets as we know them today. In 10 years, we will hopefully be in a world where buying/selling any stock, bond, or commodity is as easy as making a trade on Binance.
There will be a whole new wave of investors who just never had the means to do so in the past.