Konfigurationen sagde starting_capital: 100000, og grafens y-akse sagde USD. Hvert fill i loggen var et USDC-tal. I elleve måneder af den kørsel levede de to fakta i samme celle, og ingen havde grund til at skille dem ad.
Så gik Silicon Valley Bank konkurs, Circle sagde, at $3.3 milliarder af USDC-reserverne sad fast der, og USDC handles til 87 cent. Vores "dollar"-bog steg. BTC prissat i USDC røg i vejret. Perpetualen printede grønt. Kontanterne, vi havde behandlet som en risikofri 100,000, var det, der bevægede sig.
Jeg fanger stadig research-pipelines, der markerer USDC, USDT og USD som én kolonne. Dette er den weekend, pillet fra hinanden i den rækkefølge, ledgeren så det.
Linjen, der sagde $100,000
Papirkonto, USDC-margineret BTC-perpetual, beskeden long. 30,000 USDC i BTC-notional, omkring 1.5 BTC ved fredagens mark nær $20,150. De øvrige 70,000 sad som USDC-collateral. Underallokeret med vilje. Vi var ved at varme en strategi op. Resten af stakken sad i kontanter.
NAV-funktionen gjorde, hvad de fleste af dem gør. Den lagde USDC-kontanter sammen med urealiseret USDC-pnl og skrev summen ind i en serie ved navn equity_usd. Der stod en kommentar i konfigurationen, jeg selv havde skrevet:
stablecoins = 1 dollar. dobbelttæl ikke FX.
Jeg havde ment: lad være med at gøre en USDT-funding-betaling til et ekstra dollar-træk ved at konvertere den to gange. Det, jeg faktisk havde gjort, var at fryse FX-kursen på 1.0 for resten af filen.
quote_asset = "USDC"
Venueet var et USDC-venue. Fills, margin, funding, likvidationsmarks, lot size, min notional, det hele. Hyperliquid, dYdX v3, Coinbase International, et dusin andre, samme form. Research-notebooket importerede et BTCUSDC-candle og et BTCUSD-candle, brugte det første til handel og mærkede det andet på plottet, fordi plottet så mere professionelt ud i dollar.
Og det her er den lille, dumme detalje, jeg stadig tænker på på mærkelige tidspunkter: plotting-bibliotekets standard-aksetitel er "USD". Jeg overskrev den aldrig. Folk gik forbi skærmen og læste en enhed, serien ikke havde.
Fredag aften, Circles tweet
10. marts 2023. SVB er allerede væk. Circle oplyser, at $3.3 milliarder af dens daværende ~$40 milliarder USDC-reserve sad i den krakkede bank, omkring 8%. Coinbase suspenderer USDC-konverteringer samme aften. Indløsning, den egentlige peg-mekanisme, er lukket for weekenden.
Backtesten havde ingen række til nogen af delene. Ingen flag for indløsningsstop, intet udsteder-reserve-felt, ingen "kan jeg få dollar for denne token før mandag." Den havde en close. Close fredag var stadig 1.0000 i vores FX-fil, fordi FX-filen var en stub, der returnerede 1.0 for alt, hvis ticker startede med USD.
Jeg plejede at behandle en USDT-præmie som lærebogsstøj, den slags man nævner i en fodnote og så ignorerer. Vi brugte engang tyve minutter i et køkken på at diskutere, om 1.03 var "værd at booke." Vi var begge i gang med at redigere virkeligheden. Parret er en serie. Gem den. Stop med at stemme om den.
0.8789
Lørdag morgen. CoinGeckos bund på USDC er $0.8789. Andre tapes printer $0.87. Et par DEX-pools går gennem $0.80. DAI, proppet med USDC som collateral, følger den ned. USDT går den anden vej, $1.03 på nogle skærme, $1.06 på Kraken.
Stub-FX-filen returnerer stadig 1.0. Backtestens ur ved, at det er lørdag. Den ved ikke, at bogens enhed nu er en nødlidende token.
Kraken-printet til 26,000
Bitstamp BTC/USD cirkler omkring $20,200. Kraken BTC/USDC printer over $26,000. Det er den samme bitcoin. Det andet tal er en dollarpris divideret med en brudt peg, plus den luft, en tynd USDC-bog lægger til en lørdag.
Vores venue markerede perpetualen i USDC. Tag et konservativt tape, BTC/USDC til ~$23,000, hvilket er $20,200 / 0.88. Den 1.5 BTC long er oppe med omkring 4,300 USDC. Konto i native enheder: 104,300 USDC. Motoren rapporterer $104,300, en weekend 4.3% i plus, og en funding-betaling lander oveni i samme enhed.
I dollar er de 70,000 USDC i ledig collateral omkring $61,600 værd. Hele 104,300 USDC er omkring $91,800 værd. Bogen, der "tjente" 4.3%, tabte 8% af sin dollarkapital, mens den for det meste sad i kontanter.
Weekendens afkast var et enhedsskift, ikke et heldskifte. En long BTC/USDC-position på en USDC-ned-dag er mekanisk long depegget. Du kan ønske det bet. Du kan ikke opdage det bagefter i en serie mærket USD.
cash_usd = cash_usdc * 1.0
Den linje er den, jeg beholder. Den kørte på hver bar, inklusive de bars, hvor USDCUSD var 0.87. At gange med 1.0 føles som en no-op, og det er derfor, den overlever code review. Det er et FX-mark. Et frosset et.
De 70,000 USDC i collateral udløste aldrig en handel, så ingen slippage-model kiggede nogensinde på dem, ingen gebyrtabel, ingen funding. Kontanter skal være den kedelige kolonne. På denne bog var det den største risiko, og den eneste vi ikke prissatte.
En maker-rabat på BTC-fills den weekend var 2 eller 3 bps, hvis du overhovedet blev filled. Noteringsaktivets bevægelse var 1,300 bps. Vi har en hel stak til 3 og en stub til 1,300.
Den grønne weekend på grafen
Mandag morgen på Slack, før nogen havde åbnet USDCUSD: vi printede 4% over natten. Nogen spurgte, om vi skulle skalere papirstørrelsen. Jeg kiggede på grafen, så på Kraken, så på stubben.
| Ledgerpost | Hvad motoren gemte | Lørdag, native | Samme øjeblik, i dollar |
|---|---|---|---|
| Ledig collateral | 70,000 USDC × 1.00 | 70,000 USDC | ~$61,600 |
| BTC-perp-mark | BTCUSDC last | ~23,000 USDC (26,000 på Kraken) | BTCUSD ~$20,200 |
| Urealiseret på 1.5 BTC | +4,300 USDC | +4,300 USDC | mest pegget, noget bitcoin |
| Rapporteret NAV | 104,300 "USD" | 104,300 USDC | ~$91,800 |
USDT-bøger havde den omvendte karikatur. USDT handles til overkurs, så en USDT-margineret flad konto viste en dollargevinst, den heller ikke havde tjent, og et BTCUSDT-mark, der var for lavt i forhold til BTCUSD. Hvis du rangerede to "identiske" BTC-perps den weekend, én på et USDC-venue og én på et USDT-venue, rangerede du noteringstokens og kaldte det alpha.
Papirkontoen, den der faktisk holdt USDC, var tættere på sandheden end research-dashboardet. Den hævdede aldrig at være dollar. Det gjorde vi i eksporten.
Eksporten, vi sendte afsted mandag
USDC kravlede tilbage mod $1, efter at Treasury, Fed og FDIC sagde, at SVB-indskydere ville blive gjort skadesløse, og efter at Circle sagde, at de ville dække et underskud. Mandag var pegget stort set lappet. Stub-FX-filen, som havde været forkert i 48 timer, var rigtig igen.
Men daglige bars skjulte det. 00:00 UTC-samplet den 11. marts fangede USDC allerede ude, eller allerede på vej tilbage, afhængigt af leverandøren, og samplet den 12. marts var en anden film. Hvis du kun gemte NAV og ikke noteringsmarkeringen, kunne du ikke rekonstruere hvilken. Den grimme weekend blev fladtrykt til et blip, der var lille nok til at ignorere, hvilket vi gjorde, fordi vi sampled dagligt.
Det, vi nu holder på bogen, er tre serier, altid, selv når de ligger oven på hinanden i månedsvis:
- NAV i venueets noteringsaktiv, den enhed du faktisk kan hæve.
- Noteringsaktiv versus USD, et rigtigt tape, inklusive lørdag, inklusive 0.87, inklusive de timer Coinbase ikke konverterede.
- NAV i dollar, som en afledt serie, så en plot-etiket med USD har en forælder.
Hvis en agent skriver backtesten, er tjekket det samme. Spørg den om noteringsaktivet for hver position og for kontanter. Hvis den svarer USD på et USDC-venue, er kørslen ikke en dollar-kørsel. Marts 2023 er den uge, jeg genafspiller, når nogen fortæller mig, at skelnen ikke flytter Sharpe. Den flyttede denne mere, end strategien gjorde, og strategien var den del, vi havde modeller til.
← Alle indlæg


