SCP-TBD - Parametric Survival - A Pragmatic Fee Model
Prelude
A copy of this proposal is available for easier reading on Google Docs due to Metaforo formatting issues. Metaforo will remain the source of truth for governance incubation purposes.
https://docs.google.com/document/d/1Ek3LaOIwTZQTAnFIcZfnNxsZU7vKl-rRvgXUVe7YJi0/edit
The accompanying model is provided here for reference
https://docs.google.com/spreadsheets/d/11e3Kys4wlMew-OGNoUX3IYb3wUOMxMPLxgJqYsJB-Jc/edit#gid=0
Summary
This proposal directly supersedes SCP-128.
This proposal outlines a parametric fee model to be implemented on all trades routes.
FOX holders over a given parameter qualify for free trades.
Small trades under a given parameter qualify for free trades.
A parametric curve determines discounted fees as a function of size.
Parameters will initially be determined by governance via this proposal.
They will be maintained by TMDC in the interim and implemented by product and engineering.
Ultimately be maintained via governance and enacted via SnapShot, with the results attached as data to the proposal and stored on chain. This is consistent with mature DAO best practices, inspired by lending protocols like Aave, or AMM’s like Curve.
Abstract
This proposal aims to dovetail our current interests into one: supporting low volume low amount transactions, charging best in industry rates on nominal transactions, and giving a large boost to FOX holders.
Providing value to all while leaving no one in the cold, making ShapeShift objectively the best place as the bottom line is supported across the board.
Motivation
ShapeShift is not profitable. We are burning ~$200k in stablecoin runway each month, more if subsidized infrastructure via the Fox Foundation is included. We need to promptly course correct from our current default-dead business model and it should be in governance’s hands to determine that future
ShapeShift tried a “many revenue streams” approach. These are often characterized as great or diverse. Unfortunately, they all have either become defunct, have failed to deliver, or take so long to convert that the DAO can’t meet its obligations. Or worse, they deliver tokens that are held back from conversion into our main liability assets. While it makes logical sense to have diverse revenue, without proper ownership they don’t convert in any meaningful timeline.
Monetizing trade volume via fees is the de facto standard way for similar organizations or competitions within the ecosystem to generate revenue.
omgitsjustfees-alwayshasbeen.jpg
There exists ambiguity in governance and the community around recently implemented fees via monetization experiments with good arguments on both sides of an old debate.
Several proposals exist to indirectly address the debate around fees with varied approaches and subtexts.
-
This proposal seeks an amenable, unambiguous and clear compromise on multiple positions in a concrete way, meeting the following criteria:
Free trades for small amounts under a specified parameter
- Free trades for FOX holders over a specified parameter
Fees that decrease as a function of trade size, starting at a maximum parameter, decaying to a minimum parameter, with curve parameters.
A data-driven, unambiguous, governance-approved, and parametric fee model with clear invalidation criteria plus tunability is necessary to ensure robust trade driven revenue, and hence sustainability and survival for the DAO.
Specification
The model and its parameters shall apply to all current and future trade routes or features that include a buy and sell asset(s).
It is useful to consider the parameters and their interactions in parts.
Free trades for small traders
Problem: Small traders are fickle, transient, create an outsized support burden, yet are often vocal supporters of a good product. Although they are difficult to serve, they can become one of our strongest assets for the community.
Small traders are also difficult to monetize, for example
-
a 25bps fee on a $1,000 trade equates to $2.50 in DAO revenue.
- This would require ~80,000 transactions of $1000 per month to generate $200k in revenue.
Large numbers of small users is difficult for support, operations and moderation; we reached a peak of ~50,000 MAU with ~$300,000 of OP token incentives
Solution - let small trades be free, up to a specified parameter. We propose the following parameter
-
MAXIMUM_FREE_TRADE_SIZE_USD
- Denominated in USD at market price of sell asset
- Price oracles are not of concern; downside risk is limited to a lost fee.
Set to $1000 initially.
A small trader given a good experience can become a loyal supporter. We let the krill go free.
Free trades for FOX holders
Problem: Currently the FOX token has no economic utility outside governance participation, sadly the space still find governance underrated as a use case.
Solution: This proposal gives the token utility by discounting trade fees to zero for substantial FOX holders. This is a necessary but insufficient step towards a FOX rewards program, which is yet to be specified.
The parameter should be designed with the consideration of the LTV of the user in terms of revenue foregone if fees were mandatory, assuming demand is purely inelastic. This is not precisely true, but a good linearization determines a starting point.
A reasonable economic burden to the buyer, but still creating a monetary incentive to buy, hold, and participate.
-
For the purpose of analysis, let’s consider the current market, and the persona “rational actor”
a FOX price of $0.02, with
- A user executing a $10,000 trade,
30bps fees
Said trade brings the DAO $30 in revenue. The persona of a user executing $10,000 in current market conditions is one of a regularly active participant. Assume they execute one transaction per month for 12 months, paying $360 in fees - their lifetime value, or LTV.
The following extreme examples would not fit their use case:
-
100 FOX, or $2. A rational actor would buy $2 worth of FOX to offset a $30 fee on a single trade. Clearly, this is easily exploitable and harmful to DAO revenue.
1,000,000 FOX, or $20,000. A rational actor is unlikely to allocate $20,000 of capital to offset $360 of trades in a year.
There exists a balance we must strike to capture value between easily foregone revenue and an unattractive proposition to users.
As such, we propose the following parameter
-
MINIMUM_FOX_HOLDING_FREE_TRADE_SIZE
- Denominated in FOX
- Set to an initial value of 100,000 FOX,or $2,000 given the price used above.
Determined via the same mechanism as governance, i.e. SnapShot algorithm. This captures the market participants including liquidity providers, farmers, multiple chains etc.
Bear in mind, the cost of acquiring the minimum FOX required is not an expense to the user, rather a capital allocation. They are not $2,000 worse off - they have allocated capital to a liquid asset that can later be disposed of, and market participants may speculate on price and are exposed to volatility in both directions.
This could also be denominated in a USD value, with a utility appropriate to market conditions, say $2,000, and computed using a suitable price oracle such as Chainlink, however this adds additional lift and can be considered in a future proposal.
A future, or detail-focused technical suggestion to this proposal could specify additional parameters, such that the discount is not a binary option of the fee curve vs zero over the parametric threshold, but rather a function of FOX holdings and/or time. @woodenfurniture has good thoughts on a potential mechanism.
We support the FOX holding community.
Fee discount curve
Businesses operating at scale can afford to operate on lower margins, referred to as volume discounts.
Fees charged to a user should be proportional to the utility of the service that is provided to them.
Consider a flat 25 bps fee on various trade sizes
-
A user executing a $1000 trade doesn’t need a $2.50 fee to worry about.
- A user executing a $10,000 trade on a slick and reliable UI will gladly pay $25 for the service of doing so. We’ve heard this direct feedback from users actually doing these trades “don’t clutter my UI with options, just make the execution good. I’ll gladly pay since I already do everywhere else.”
A user executing a $1,000,000 trade on the same UI will likely find a $2,500 fee steep, and are savvy enough to seek optimal trade routes elsewhere.
We propose a sigmoid curve-based decaying fee structure. This model allows for flexibility and value capture across various trade sizes.
The model is defined as follows
If you napped during math lectures like me and forget what a sigmoid curve is, the output of this function looks like the following.
Key Parameters
- No-Fee Threshold (USD)
- Transactions below this threshold incur zero fees.
- Initial value: $1,000
- Max Fee (bps)
- The highest possible fee rate, applying immediately after surpassing the No-Fee Threshold.
- Initial value: 29 basis points
- Psychologically lower than 30bps, easy sell.
- Min Fee (bps)
- The fee asymptotically approaches this value as trade size goes to infinity.
- Initial value: 4 basis points
- Long tail value capture on large trades. $400 of fees on a $1mm trade is equivalent to ~8 cups of coffee for a $100k income earner, both representing 0.04% of the size.
- Curve Midpoint (USD)
- This parameter sets the inflection point of the sigmoid curve.
- Initial value: $150,000
- This “moves” the curve left and right.
- Curve Steepness Factor (k)
- Controls the "sharpness" of the sigmoid curve.
- A higher value leads to a more gradual transition; a lower value leads to a sharper transition.
- Initial value: 40,000
- This value is unitless and arbitrary, but it feels right.
Model Features
- Utilizes a sigmoid function to define the fee curve.
- Allows for easy adjustments via key parameters.
- Designed to capture maximum value in the range where the majority of trades occur.
Benefits
- Accommodates both small and large traders.
- Enables optimal value capture on the most frequent trade sizes.
- Key parameters are under DAO governance, allowing future adjustments
- Gives FOX holders another utility
Model implementation
A spreadsheet is available here to be forked
https://docs.google.com/spreadsheets/d/11e3Kys4wlMew-OGNoUX3IYb3wUOMxMPLxgJqYsJB-Jc/edit#gid=0
Raw LaTeX
Use https://www.quicklatex.com/ to render
\text{Fee (bps)} =
\begin{cases}
0 & \text{if } \text{Trade Size} \leq \text{No-Fee Threshold (USD)} \
\text{Min Fee (bps)} + \frac{\text{Max Fee (bps)} - \text{Min Fee (bps)}}{1 + \exp\left(\frac{1}{\text{Curve Steepness Factor}} \times (\text{Trade Size} - \text{Curve Midpoint (USD)})\right)} & \text{otherwise}
\end{cases}
Pseudocode implementation
The implementation is simple as follows and is a small engineering lift.
CONST NO_FEE_THRESHOLD_USD = 1000
CONST MAX_FEE_BPS = 29
CONST MIN_FEE_BPS = 4
CONST CURVE_MIDPOINT_USD = 150000
CONST STEEPNESS_DENOMINATOR = 40000
FUNCTION calculateFee(tradeSize)
IF tradeSize <= NO_FEE_THRESHOLD_USD THEN
RETURN 0
ELSE
steepnessFactor = 1 / STEEPNESS_DENOMINATOR
RETURN MIN_FEE_BPS + (MAX_FEE_BPS - MIN_FEE_BPS) / (1 + EXP(steepnessFactor * (tradeSize - CURVE_MIDPOINT_USD)))
END IF
END FUNCTION
Benefits
This proposal is quantitative and focuses the discussion on the mechanics and parameters of the model, rather than assertions and hope.
It is easily understood, marketable and catchy, with a consistent message, and details that can be expanded upon by referencing dynamic parameters, for example
-
“Small trades are free at ShapeShift!”
- “We support small traders, we don’t charge fees under MAXIMUM_DOLLARS_FREE_TRADE_SIZE”
- “Free trades for FOX holders at ShapeShift”
- “We support our community - hold MINIMUM_FOX_HOLDING_FREE_TRADE_SIZE and get free trades at ShapeShift”
- “Bigger trades are cheaper at ShapeShift”
“We welcome whales - only getFeeBpsByTradeSize({ sellAssetFiatAmount, curveParameters }) basis points for your $sellAssetFiatAmount trade at ShapeShift”, or “$400 fees on a million dollar trade? $FOX yeah”
Allows for data-driven feedback and experimentation with the parameters of the model to maximize revenue generation.
Creates a value accrual mechanism for the ShapeShift token outside governance participation.
Directly addresses multiple outstanding proposals trying to indirectly address this core issue in underhanded ways.
Users can choose to opt-out of fees by buying FOX, creating buy pressure.
Creates a liquid revenue stream across a variety of trade routes that can be promptly converted into stablecoins at the TMDC’s discretion to extend our runway and ensure survival.
Drawbacks
This may impact grant funding at optimism but TBD on other grant partnerships…
This may mean we are not classed as a free public good, worth noting we are still majority open source.
The delegation of responsibility to the TMDC is acceptable but not maximal decentralization. Ensuring a balance of rapidly responding to price volatility and market feedback, vs. the cumbersome nature of a governance vote enacting simple parameter changes will be difficult to explicitly define, refine, and iterate on.
The system may be open to abuse in unforeseen ways, leading to market volatility.