کانفیگ میگفت starting_capital: 100000 و محور y نمودار میگفت USD. هر فیل در لاگ یک عدد USDC بود. یازده ماه از آن اجرا این دو واقعیت در یک سلول زندگی میکردند و کسی دلیلی برای جدا کردنشان نداشت.
بعد Silicon Valley Bank سقوط کرد، Circle گفت $3.3 میلیارد از ذخایر USDC آنجا گیر افتاده، و USDC به 87 سنت معامله شد. دفتر «دلاری» ما بالا رفت. BTC قیمتگذاریشده به USDC ترکید. پرپ سبز چاپ کرد. نقدی که 100,000 بدونریسک فرض کرده بودیم همان چیزی بود که حرکت کرد.
هنوز هم به پایپلاینهای پژوهشی برمیخورم که USDC و USDT و USD را یک ستون میزنند. این همان آخر هفته است، تکهتکه به همان ترتیبی که دفترکل دیدش.
خطی که میگفت $100,000
حساب کاغذی، پرپچوال BTC با مارجین USDC، یک لانگ متوسط. 30,000 USDC ارزش اسمی BTC، حدود 1.5 BTC در قیمت جمعه نزدیک $20,150. باقی 70,000 بهصورت وثیقه USDC نشسته بود. عمداً کمتر وارد بازار کرده بودیم. داشتیم یک استراتژی را گرم میکردیم. بقیه استک در نقد نشسته بود.
تابع NAV همان کاری را کرد که بیشترشان میکنند. نقد USDC را با pnl تحققنیافته USDC جمع کرد و حاصل را در سریای به نام equity_usd نوشت. در کانفیگ کامنتی بود که خودم نوشته بودم:
stablecoins = 1 dollar. don't double-count FX.
منظورم این بود: پرداخت فاندینگ USDT را با دو بار تبدیل کردن به یک حرکت دلاری دوم تبدیل نکن. کاری که واقعاً کرده بودم این بود که نرخ FX را برای بقیه فایل روی 1.0 منجمد کنم.
quote_asset = "USDC"
صرافی یک صرافی USDC بود. فیلها، مارجین، فاندینگ، قیمتهای لیکوئیدیشن، اندازه لات، حداقل ارزش اسمی، همه. Hyperliquid، dYdX v3، Coinbase International، ده دوازده تای دیگر، همان شکل. نوتبوک پژوهش یک کندل BTCUSDC و یک کندل BTCUSD وارد کرد، اولی را برای معامله به کار برد و دومی را روی نمودار برچسب زد چون نمودار به دلار حرفهایتر به نظر میرسید.
و این همان بخش کوچک و احمقانهای است که هنوز در ساعات عجیب به آن فکر میکنم: عنوان پیشفرض محور کتابخانه رسم نمودار «USD» است. هرگز آن را عوض نکردم. آدمها از کنار صفحه رد میشدند و واحدی را میخواندند که سری اصلاً نداشت.
جمعه شب، توییت Circle
10 مارس 2023. SVB دیگر رفته است. Circle افشا میکند که $3.3 میلیارد از ذخیره آنزمان حدوداً $40 میلیارد USDC در بانک ورشکسته نشسته بوده، حدود 8%. Coinbase همان شب تبدیلهای USDC را متوقف میکند. بازخرید، همان سازوکار واقعی پگ، برای آخر هفته بسته است.
بکتست هیچ ردیفی برای هیچکدام از اینها نداشت. نه فلگ توقف بازخرید، نه فیلد ذخیره ناشر، نه «میتوانم قبل از دوشنبه برای این توکن دلار بگیرم.» یک قیمت پایانی داشت. قیمت پایانی جمعه هنوز در فایل FX ما 1.0000 بود، چون فایل FX یک stub بود که برای هر چیزی که تیکرش با USD شروع میشد 1.0 برمیگرداند.
قبلاً پریمیوم USDT را نویز کتابدرسی میدانستم، از آن چیزهایی که در پاورقی ذکر میکنی و بعد نادیده میگیری. یک بار بیست دقیقه در آشپزخانه بحث کردیم که آیا 1.03 «ارزش ثبت کردن دارد.» هر دو داشتیم سرمقاله مینوشتیم. جفت یک سری است. ذخیرهاش کن. دیگر به آن رأی نده.
0.8789
صبح شنبه. کف CoinGecko روی USDC برابر $0.8789 است. نوارهای دیگر $0.87 چاپ میکنند. چند استخر DEX از $0.80 رد میشوند. DAI، پر از USDC بهعنوان وثیقه، دنبالش پایین میآید. USDT مسیر مخالف را میرود، $1.03 روی بعضی صفحهها، $1.06 روی Kraken.
فایل stub FX هنوز 1.0 برمیگرداند. ساعت بکتست میداند شنبه است. نمیداند که واحد دفتر حالا یک توکن تحت فشار است.
معامله Kraken روی 26,000
BTC/USD در Bitstamp حول $20,200 میچرخد. BTC/USDC در Kraken بالای $26,000 چاپ میشود. همان بیتکوین است. عدد دوم قیمت دلاری تقسیم بر یک پگ شکسته است، بهعلاوه هر هوایی که یک دفتر رقیق USDC در یک شنبه اضافه میکند.
صرافی ما پرپچوال را به USDC قیمت میزد. یک نوار محافظهکارانه را بگیر، BTC/USDC در حدود $23,000، که میشود $20,200 / 0.88. لانگ 1.5 BTC حدود 4,300 USDC در سود است. حساب به واحد بومی: 104,300 USDC. موتور $104,300 گزارش میکند، یک آخر هفته 4.3% مثبت، و یک پرداخت فاندینگ روی همان واحد مینشیند.
به دلار، 70,000 USDC وثیقه بیکار حدود $61,600 میارزد. کل 104,300 USDC حدود $91,800 میارزد. دفتری که 4.3% «سود کرده بود» 8% از سرمایه دلاریاش را از دست داد در حالی که عمدتاً در نقد نشسته بود.
بازده آخر هفته تغییر واحد بود، نه تغییر بخت. یک پوزیشن لانگ BTC/USDC در روزی که USDC پایین است، از نظر مکانیکی لانگِ دیپگ است. میتوانی آن شرط را بخواهی. نمیتوانی بعداً آن را در سریای با برچسب USD کشف کنی.
cash_usd = cash_usdc * 1.0
همان خطی است که نگه میدارم. روی هر بار اجرا شد، از جمله بارهایی که USDCUSD برابر 0.87 بود. ضرب در 1.0 حس یک no-op را میدهد، برای همین از code review جان سالم به در میبرد. یک نرخ FX است. یک نرخ منجمد.
70,000 USDC وثیقه هرگز معاملهای راه نینداخت، پس هیچ مدل اسلیپیجی هرگز به آن نگاه نکرد، نه جدول کارمزد، نه فاندینگ. قرار است نقد ستون کسالتبار باشد. در این دفتر بزرگترین ریسک بود، و تنها ریسکی که قیمتگذاریاش نکردیم.
ریبت maker روی فیلهای BTC آن آخر هفته 2 یا 3 bps بود، اگر اصلاً فیل میشدی. حرکت ارز مظنه 1,300 bps بود. برای آن 3 یک استک کامل داریم و برای آن 1,300 یک stub.
آخر هفته سبز روی نمودار
دوشنبه صبح Slack، قبل از اینکه کسی USDCUSD را باز کرده باشد: شبانه 4% چاپ کرده بودیم. کسی پرسید آیا باید سایز حساب کاغذی را بزرگ کنیم. به نمودار نگاه کردم، بعد به Kraken، بعد به stub.
| قلم دفتر | آنچه موتور ذخیره کرد | شنبه، واحد بومی | همان لحظه، به دلار |
|---|---|---|---|
| وثیقه بیکار | 70,000 USDC × 1.00 | 70,000 USDC | ~$61,600 |
| مارک پرپ BTC | آخرین BTCUSDC | ~23,000 USDC (26,000 در Kraken) | BTCUSD ~$20,200 |
| سود تحققنیافته روی 1.5 BTC | +4,300 USDC | +4,300 USDC | عمدتاً پگ، کمی بیتکوین |
| NAV گزارششده | 104,300 "USD" | 104,300 USDC | ~$91,800 |
دفترهای USDT کارتون مخالف را داشتند. USDT گران معامله میشد، پس یک حساب فلت با مارجین USDT سود دلاریای نشان میداد که آن هم کسب نکرده بود، و مارک BTCUSDT که نسبت به BTCUSD خیلی پایین بود. اگر آن آخر هفته دو پرپ «یکسان» BTC را رتبهبندی میکردی، یکی در صرافی USDC و یکی در صرافی USDT، توکنهای مظنه را رتبهبندی کرده بودی و اسمش را alpha گذاشته بودی.
حساب کاغذی، همان که واقعاً USDC نگه داشته بود، به حقیقت نزدیکتر بود تا داشبورد پژوهش. هرگز ادعا نکرد دلار است. این کار را ما در خروجی کردیم.
خروجیای که دوشنبه فرستادیم
USDC بعد از اینکه Treasury، Fed و FDIC گفتند سپردهگذاران SVB کامل جبران میشوند، و بعد از اینکه Circle گفت کسری را پوشش میدهد، به سمت $1 خزید. تا دوشنبه پگ عمدتاً وصله شده بود. فایل stub FX، که 48 ساعت غلط بود، دوباره درست شد.
اما بارهای روزانه پنهانش کردند. نمونه 00:00 UTC در 11 مارس USDC را از قبل خارج از پگ میگرفت، یا از قبل در حال برگشت، بسته به وندور، و نمونه 12 مارس فیلم دیگری بود. اگر فقط NAV را ذخیره میکردی و نه مارک مظنه را، نمیتوانستی بازسازی کنی کدام بود. آخر هفته زشت به یک پرش کوچک تخت شد، آنقدر کوچک که بشود نادیدهاش گرفت، که نادیده گرفتیم، چون نمونهبرداریمان روزانه بود.
آنچه حالا روی دفتر نگه میداریم سه سری است، همیشه، حتی وقتی ماهها روی هم نشستهاند:
- NAV به ارز مظنه صرافی، واحدی که واقعاً میتوانی برداشت کنی.
- ارز مظنه در برابر USD، یک نوار واقعی، شامل شنبه، شامل 0.87، شامل ساعاتی که Coinbase تبدیل نمیکرد.
- NAV به دلار، بهعنوان یک سری مشتق، تا برچسب USD روی نمودار یک والد داشته باشد.
اگر یک agent بکتست را بنویسد، همان چک برقرار است. از آن بپرس ارز مظنه هر پوزیشن و نقد چیست. اگر در یک صرافی USDC جواب USD داد، آن اجرا یک اجرای دلاری نیست. مارس 2023 همان هفتهای است که وقتی کسی میگوید این تمایز Sharpe را جابهجا نمیکند، بازپخش میکنم. همین یکی را بیشتر از خود استراتژی جابهجا کرد، و استراتژی همان بخشی بود که برایش مدل داشتیم.
← همهٔ مطالب


