#
Collar v0: The RFQ Model
-- v0 has been retired, please see v1! --
Collar's first version ran on an RFQ (request-for-quote) model, where users requested pricing from a network of marketmakers who compete for the trade.
We're decided to implement on-chain RFQ-based model in order to make the pricing process transparent, open, and fair, in line with DeFi values.
As a client, your goal is to get as large of a loan as you need, for as long as you need, while retaining as much upside as you can, all while avoiding any form of liquidation.
The marketmaker is trying to give you the best terms they can while still making money. In order to keep them honest, Collar puts them in some degree of competition with eachother so clients have the best possible experience.
Here's how it works.
There are 7 states any given quote can be in. This is tracked in the CollarEngine for each client, who can only quote one trade at a time with a single marketmaker.
- NEW - means the client has nothing currently priced
- REQD - means the client has requested a price from a marketmaker
- ACKD - means the client has been acknowledged by the marketmaker
- PXD - means the client can now accept or reject the price
- OFF - means the marketmaker has pulled the price due to market movement
- REJ - means the client or marketmaker has rejected the pricing and a new pricing can be requested
- DONE - means the client has said "DONE" and consented to a trade
Some benefits of the RFQ model include...
- Error reduction vs. TradFi
- Competition
- Openness
- MEV Prevention
- Borrower Certainty
Once a trade is priced, we will know the following fields:
struct Pricing {
uint256 rfqid; // how many prices have been req'd
address lendAsset; // i.e. USDC
address marketmaker; // address of marketmaker / module
address client; // address of borrower
PxState state; // this is the above RFQ state
string structure; // what type of trade is being priced
string underlier; // i.e. ETH
uint256 maturityTimestamp; // seconds since Epoch (UNIX)
uint256 qty; // how much of the asset to hedge
uint256 ltv; // loan-to-value ratio i.e. 90%
uint256 putstrikePct; // the floor of the collar
uint256 callstrikePct; // the ceiling of the collar
string notes; // largely pointless
}