Die Config sagte starting_capital: 100000, und die y-Achse des Charts sagte USD. Jeder Fill im Log war eine USDC-Zahl. Elf Monate dieses Laufs lebten die zwei Fakten in derselben Zelle, und niemand hatte einen Grund, sie zu trennen.
Dann brach die Silicon Valley Bank zusammen, Circle sagte, $3.3 Milliarden der USDC-Reserven steckten dort fest, und USDC notierte bei 87 Cent. Unser „Dollar“-Buch ging nach oben. BTC, in USDC notiert, raste nach oben. Der Perp druckte grün. Das Cash, das wir als risikofreie 100,000 behandelt hatten, war das, was sich bewegte.
Ich erwische immer noch Research-Pipelines, die USDC, USDT und USD als eine Spalte führen. Das hier ist dieses Wochenende, auseinandergenommen in der Reihenfolge, in der das Ledger es gesehen hat.
Die Zeile, auf der $100,000 stand
Paper-Konto, USDC-besicherter BTC-Perpetual, bescheidene Long-Position. 30,000 USDC BTC-Nominal, etwa 1.5 BTC zum Freitags-Mark nahe $20,150. Die anderen 70,000 lagen als USDC-Collateral. Absichtlich unterinvestiert. Wir wärmten eine Strategie auf. Der Rest des Stacks saß in Cash.
Die NAV-Funktion tat, was die meisten tun. Sie addierte USDC-Cash zu USDC unrealized PnL und schrieb die Summe in eine Serie namens equity_usd. In der Config stand ein Kommentar, den ich selbst geschrieben hatte:
stablecoins = 1 Dollar. FX nicht doppelt zählen.
Ich hatte gemeint: mach aus einer USDT-Funding-Zahlung keine zweite Dollarbewegung, indem du sie zweimal umrechnest. Was ich tatsächlich getan hatte, war, den FX-Kurs für den Rest der Datei auf 1.0 einzufrieren.
quote_asset = "USDC"
Die Venue war eine USDC-Venue. Fills, Margin, Funding, Liquidationsmarks, die Lot Size, das Min Notional, alles. Hyperliquid, dYdX v3, Coinbase International, ein Dutzend andere, dieselbe Form. Das Research-Notebook importierte eine BTCUSDC-Kerze und eine BTCUSD-Kerze, nahm die erste zum Traden und beschriftete die zweite im Plot, weil der Plot in Dollar professioneller aussah.
Und das ist der kleine, dumme Teil, über den ich noch zu seltsamen Stunden nachdenke: der Standard-Achsentitel der Plot-Bibliothek ist „USD“. Ich habe ihn nie überschrieben. Leute liefen am Bildschirm vorbei und lasen eine Einheit, die die Serie nicht hatte.
Freitagnacht, Circles Tweet
10. März 2023. Die SVB ist bereits weg. Circle legt offen, dass $3.3 Milliarden seiner damaligen ~$40 Milliarden USDC-Reserve bei der gescheiterten Bank lagen, etwa 8%. Coinbase setzt USDC-Conversions noch in derselben Nacht aus. Redemption, der eigentliche Peg-Mechanismus, ist übers Wochenende geschlossen.
Der Backtest hatte für nichts davon eine Zeile. Kein Redemption-Halt-Flag, kein Issuer-Reserve-Feld, kein „kann ich vor Montag Dollar für diesen Token bekommen.“ Er hatte einen Close. Der Close am Freitag stand in unserer FX-Datei noch bei 1.0000, weil die FX-Datei ein Stub war, der 1.0 für alles zurückgab, dessen Ticker mit USD anfing.
Früher habe ich eine USDT-Prämie als Lehrbuch-Rauschen behandelt, so etwas, das man in einer Fußnote erwähnt und dann ignoriert. Wir haben einmal zwanzig Minuten in einer Küche darüber gestritten, ob 1.03 „buchenswert“ sei. Wir haben beide redaktionell geurteilt. Das Paar ist eine Serie. Speichern. Aufhören, darüber abzustimmen.
0.8789
Samstagmorgen. CoinGeckos Tief bei USDC liegt bei $0.8789. Andere Tapes drucken $0.87. Ein paar DEX-Pools gehen durch $0.80. DAI, vollgestopft mit USDC als Collateral, folgt nach unten. USDT geht den anderen Weg, $1.03 auf manchen Screens, $1.06 auf Kraken.
Die Stub-FX-Datei gibt immer noch 1.0 zurück. Die Uhr des Backtests weiß, dass Samstag ist. Sie weiß nicht, dass die Einheit des Buchs jetzt ein angeschlagener Token ist.
Der Kraken-Print bei 26,000
Bitstamp BTC/USD kreist um $20,200. Kraken BTC/USDC druckt über $26,000. Das ist derselbe Bitcoin. Die zweite Zahl ist ein Dollarpreis geteilt durch einen gebrochenen Peg, plus die Luft, die ein dünnes USDC-Buch an einem Samstag dazugibt.
Unsere Venue markierte den Perpetual in USDC. Nimm ein konservatives Tape, BTC/USDC bei ~$23,000, das ist $20,200 / 0.88. Die 1.5-BTC-Long steht etwa 4,300 USDC im Plus. Konto in nativen Einheiten: 104,300 USDC. Die Engine reportet $104,300, ein 4.3%-Plus-Wochenende, und eine Funding-Zahlung landet obendrauf in derselben Einheit.
In Dollar sind die 70,000 USDC ungenutztes Collateral etwa $61,600 wert. Die gesamten 104,300 USDC sind etwa $91,800 wert. Das Buch, das 4.3% „gemacht“ hat, hat 8% seines Dollarkapitals verloren, während es größtenteils in Cash saß.
Die Wochenend-Rendite war ein Wechsel der Einheit, kein Wechsel des Glücks. Eine Long-BTC/USDC-Position an einem USDC-Abwärtstag ist mechanisch long den Depeg. Man kann diese Wette wollen. Entdecken kann man sie hinterher nicht in einer Serie mit dem Label USD.
cash_usd = cash_usdc * 1.0
Diese Zeile ist die, die ich behalte. Sie lief auf jedem Bar, einschließlich der Bars, an denen USDCUSD bei 0.87 stand. Multiplizieren mit 1.0 fühlt sich an wie ein No-Op, deshalb überlebt es Code Review. Es ist ein FX-Mark. Ein eingefrorener.
Die 70,000 USDC Collateral haben nie einen Trade ausgelöst, also hat kein Slippage-Modell je darauf geschaut, keine Gebührentabelle, kein Funding. Cash soll die langweilige Spalte sein. Auf diesem Buch war es das größte Risiko, und das einzige, das wir nicht bepreist haben.
Ein Maker-Rebate auf den BTC-Fills an diesem Wochenende lag bei 2 oder 3 bps, wenn man überhaupt gefüllt wurde. Die Bewegung des Quote-Assets war 1,300 bps. Wir haben einen ganzen Stack für die 3 und einen Stub für die 1,300.
Das grüne Wochenende auf dem Chart
Montagmorgen Slack, bevor jemand USDCUSD aufgemacht hatte: wir haben über Nacht 4% gedruckt. Jemand fragte, ob wir die Paper-Size skalieren sollten. Ich schaute auf den Chart, dann auf Kraken, dann auf den Stub.
| Ledger-Posten | Was die Engine speicherte | Samstag, nativ | Derselbe Moment, in Dollar |
|---|---|---|---|
| Ungenutztes Collateral | 70,000 USDC × 1.00 | 70,000 USDC | ~$61,600 |
| BTC-Perp-Mark | BTCUSDC Last | ~23,000 USDC (26,000 auf Kraken) | BTCUSD ~$20,200 |
| Unrealisiert auf 1.5 BTC | +4,300 USDC | +4,300 USDC | größtenteils der Peg, etwas Bitcoin |
| Ausgewiesener NAV | 104,300 „USD“ | 104,300 USDC | ~$91,800 |
USDT-Bücher hatten den gegenteiligen Cartoon. USDT notierte teuer, also zeigte ein USDT-besichertes flaches Konto einen Dollar-Gewinn, den es ebenfalls nicht verdient hatte, und einen BTCUSDT-Mark, der relativ zu BTCUSD zu niedrig war. Wenn man an diesem Wochenende zwei „identische“ BTC-Perps rang, einen auf einer USDC-Venue und einen auf einer USDT-Venue, hat man die Quote-Token gerankt und es Alpha genannt.
Das Paper-Konto, jenes, das tatsächlich USDC hielt, war näher an der Wahrheit als das Research-Dashboard. Es hat nie behauptet, Dollar zu sein. Das haben wir im Export gemacht.
Der Export, den wir am Montag ausgeliefert haben
USDC kroch wieder Richtung $1, nachdem Treasury, Fed und FDIC sagten, SVB-Einleger würden schadlos gehalten, und nachdem Circle sagte, es werde eine Lücke abdecken. Bis Montag war der Peg größtenteils geflickt. Die Stub-FX-Datei, die 48 Stunden lang falsch gewesen war, stimmte wieder.
Aber Daily-Bars haben es versteckt. Das 00:00-UTC-Sample am 11. März erwischte USDC schon weg, oder schon am Abprallen, je nach Vendor, und das Sample vom 12. März war ein anderer Film. Wenn man nur NAV speicherte und nicht den Quote-Mark, ließ sich nicht rekonstruieren, welches von beidem. Das hässliche Wochenende flachte zu einem Blip ab, klein genug zum Ignorieren, und genau das haben wir getan, weil wir täglich sammelten.
Was wir jetzt im Buch führen, sind drei Serien, immer, auch wenn sie monatelang übereinanderliegen:
- NAV im Quote-Asset der Venue, die Einheit, die man tatsächlich abheben kann.
- Quote-Asset versus USD, ein echtes Tape, einschließlich Samstag, einschließlich 0.87, einschließlich der Stunden, in denen Coinbase nicht convertierte.
- NAV in Dollar, als abgeleitete Serie, damit ein Plot-Label USD einen Parent hat.
Wenn ein Agent den Backtest schreibt, ist der Check derselbe. Frag ihn nach dem Quote-Asset jeder Position und des Cash. Wenn er auf einer USDC-Venue USD antwortet, ist der Run kein Dollar-Run. März 2023 ist die Woche, die ich abspiele, wenn mir jemand sagt, die Unterscheidung bewege den Sharpe nicht. Sie hat diesen hier stärker bewegt als die Strategie, und die Strategie war der Teil, für den wir Modelle hatten.
← Alle Beiträge


