V konfiguraci stálo starting_capital: 100000 a osa y grafu hlásila USD. Každý fill v logu byl číslo v USDC. Po jedenáct měsíců toho běhu ty dva fakty sdílely jednu buňku a nikdo neměl důvod je oddělovat.
Pak zkrachovala Silicon Valley Bank, Circle oznámila, že $3.3 miliardy rezerv USDC tam uvízly, a USDC se obchodoval za 87 centů. Naše „dolarová“ kniha šla nahoru. BTC kotovaný v USDC vyletěl. Perp tiskl zelenou. Hotovost, kterou jsme brali jako bezrizikových 100,000, byla právě to, co se pohnulo.
Pořád narážím na výzkumné pipeline, které označují USDC, USDT a USD jako jeden sloupec. Tohle je ten víkend, rozebraný v pořadí, v jakém ho viděl ledger.
Řádek, na kterém stálo $100,000
Papírový účet, BTC perpetual s marží v USDC, skromný long. 30,000 USDC BTC notionálu, zhruba 1.5 BTC při pátečním marku kolem $20,150. Zbylých 70,000 sedělo jako kolaterál v USDC. Záměrně podnasazené. Zahřívali jsme strategii. Zbytek stacku seděl v hotovosti.
Funkce NAV dělala to, co dělá většina z nich. Sečetla USDC cash s nerealizovaným USDC pnl a součet zapsala do řady pojmenované equity_usd. V konfiguraci byl komentář, který jsem napsal sám:
stablecoins = 1 dolar. nepočítat FX dvakrát.
Chtěl jsem říct: neproměň funding platbu v USDT na druhý dolarový pohyb tím, že ji zkonvertuješ dvakrát. Co jsem ve skutečnosti udělal, bylo zmrazit FX kurz na 1.0 pro zbytek souboru.
quote_asset = "USDC"
Ta venue byla USDC venue. Fills, marže, funding, likvidační marky, lot size, min notional, všechno. Hyperliquid, dYdX v3, Coinbase International, tucet dalších, stejný tvar. Výzkumný notebook naimportoval svíčku BTCUSDC a svíčku BTCUSD, k obchodování použil tu první a na graf nalepil tu druhou, protože v dolarech vypadal graf profesionálněji.
A tohle je ta malá, hloupá věc, na kterou pořád myslím v divných hodinách: výchozí titulek osy plotting knihovny je „USD“. Nikdy jsem ho nepřepsal. Lidi procházeli kolem obrazovky a četli jednotku, kterou ta řada neměla.
Páteční noc, tweet Circle
10. března 2023. SVB už je pryč. Circle zveřejňuje, že $3.3 miliardy z tehdejších ~$40 miliard rezerv USDC seděly v padlé bance, zhruba 8%. Coinbase tu samou noc pozastavuje konverze USDC. Redempce, skutečný mechanismus pegu, je na víkend zavřená.
Backtest na nic z toho neměl řádek. Žádný flag zastavení redempce, žádné pole rezerv emitenta, žádné „dostanu za tenhle token dolary do pondělka.“ Měl close. Páteční close bylo v našem FX souboru pořád 1.0000, protože FX soubor byl stub, který vracel 1.0 pro cokoli, jehož ticker začínal na USD.
USDT prémium jsem kdysi bral jako učebnicový šum, něco, co spadne do poznámky pod čarou a pak se ignoruje. Jednou jsme dvacet minut v kuchyni řešili, jestli 1.03 „stojí za zaúčtování.“ Oba jsme do toho pletli názor. Ten pár je řada. Uložte ho. Přestaňte o něm hlasovat.
0.8789
Sobotní ráno. Low USDC na CoinGecko je $0.8789. Jiné pásky tisknou $0.87. Pár DEX poolů protne $0.80. DAI, nacpaný USDC jako kolaterálem, jde s ním dolů. USDT jde opačným směrem, $1.03 na některých obrazovkách, $1.06 na Kraken.
Stub FX soubor pořád vrací 1.0. Hodiny backtestu vědí, že je sobota. Nevědí, že jednotkou knihy je teď token v tísni.
Print na Kraken na 26,000
Bitstamp BTC/USD krouží kolem $20,200. Kraken BTC/USDC tiskne nad $26,000. To je stejný bitcoin. Druhé číslo je dolarová cena dělená rozbitým pegem plus vzduch, který tenká kniha USDC v sobotu přidá.
Naše venue značila perpetual v USDC. Vezměme konzervativní pásku, BTC/USDC na ~$23,000, což je $20,200 / 0.88. Long 1.5 BTC je v plusu zhruba 4,300 USDC. Účet v nativních jednotkách: 104,300 USDC. Engine hlásí $104,300, víkend +4.3%, a navrch v téže jednotce přistane funding platba.
V dolarech má těch 70,000 USDC nečinného kolaterálu hodnotu zhruba $61,600. Celých 104,300 USDC má hodnotu zhruba $91,800. Kniha, která „udělala“ 4.3%, ztratila 8% svého dolarového kapitálu, zatímco většinou seděla v hotovosti.
Víkendový výnos byl změnou jednotky, ne změnou osudu. Long pozice BTC/USDC v den, kdy USDC padá, je mechanicky long depeg. Tu sázku můžete chtít. Nemůžete ji objevit dodatečně v řadě označené USD.
cash_usd = cash_usdc * 1.0
Tenhle řádek si nechávám. Běžel na každém baru, včetně barů, kde USDCUSD bylo 0.87. Násobení 1.0 působí jako no-op, proto přežije code review. Je to FX mark. Zmrazený.
Těch 70,000 USDC kolaterálu nikdy nespustilo obchod, takže se na ně nikdy nepodíval slippage model, žádná tabulka poplatků, žádný funding. Hotovost má být ten nudný sloupec. Na téhle knize to bylo největší riziko a jediné, které jsme neocenili.
Maker rebate na BTC fillech ten víkend byl 2 nebo 3 bps, pokud jste vůbec dostali fill. Pohyb kotovacího aktiva byl 1,300 bps. Máme celý stack na tu 3 a stub na tu 1,300.
Zelený víkend na grafu
Pondělní ráno na Slacku, než kdokoli otevřel USDCUSD: přes noc jsme vytiskli 4%. Někdo se zeptal, jestli nemáme navýšit paper size. Podíval jsem se na graf, pak na Kraken, pak na stub.
| Položka ledgeru | Co engine uložil | Sobota, nativně | Stejný okamžik, v dolarech |
|---|---|---|---|
| Nečinný kolaterál | 70,000 USDC × 1.00 | 70,000 USDC | ~$61,600 |
| Mark BTC perpu | BTCUSDC last | ~23,000 USDC (26,000 na Kraken) | BTCUSD ~$20,200 |
| Nerealizované na 1.5 BTC | +4,300 USDC | +4,300 USDC | většinou peg, trochu bitcoin |
| Vykázané NAV | 104,300 „USD“ | 104,300 USDC | ~$91,800 |
Knihy v USDT měly opačnou karikaturu. USDT se obchodoval s prémií, takže plochý účet s marží v USDT ukazoval dolarový zisk, který taky nevydělal, a mark BTCUSDT, který byl vůči BTCUSD příliš nízko. Když jste ten víkend seřadili dva „identické“ BTC perpy, jeden na USDC venue a jeden na USDT venue, seřadili jste kotovací tokeny a nazvali to alpha.
Papírový účet, ten, který USDC skutečně držel, byl blíž pravdě než výzkumný dashboard. Nikdy netvrdil, že je v dolarech. To jsme udělali my v exportu.
Export, který jsme v pondělí odeslali
USDC se doplazil zpátky k $1 poté, co Treasury, Fed a FDIC řekly, že vkladatelé SVB budou plně vyplaceni, a poté, co Circle řekla, že pokryje schodek. Do pondělí byl peg většinou zalátaný. Stub FX soubor, který byl 48 hodin špatně, byl zase v pořádku.
Denní bary to ale schovaly. Vzorek v 00:00 UTC 11. března zachytil USDC už mimo, nebo už na odrazu, podle vendoru, a vzorek z 12. března byl jiný film. Pokud jste ukládali jen NAV a ne mark kotace, nedalo se rekonstruovat, které z toho. Ošklivý víkend se zploštil na blip dost malý na to, aby se ignoroval, což jsme udělali, protože jsme samplovali denně.
Co teď v knize držíme, jsou tři řady, vždycky, i když měsíce sedí jedna na druhé:
- NAV v kotovacím aktivu venue, jednotka, kterou skutečně můžete vybrat.
- Kotovací aktivum versus USD, skutečná páska, včetně soboty, včetně 0.87, včetně hodin, kdy Coinbase nekonvertovala.
- NAV v dolarech, jako odvozená řada, aby popisek USD na grafu měl rodiče.
Když backtest píše agent, kontrola je stejná. Zeptejte se ho na kotovací aktivum každé pozice a hotovosti. Pokud na USDC venue odpoví USD, ten běh není dolarový běh. Březen 2023 je týden, který přehrávám, když mi někdo řekne, že to rozlišení nepohne Sharpe. Pohnulo to tímhle víc, než pohnula strategie, a strategie byla ta část, na kterou jsme měli modely.
← Všechny články


