ماه گذشته از یک استراتژی تولیدشده، منحنی سرمایهای بیرون آمد که افت سرمایه 63% داشت. عمیق و ناخوشایند بود، اما طی 6 هفته بعد بهخوبی جبران شد — از آن شکلهایی که پژوهشگر با تردید نگاهش میکند و تصمیم میگیرد اگر اندازه موقعیت را کم کند، میشود تحملش کرد. دوباره آن را از یک موتور مارجین گذراندم که میداند سطح مارجین نگهداری چیست. حساب در روز 41، وسط همان افت سرمایه، لیکویید شد و هرچه پس از روز 41 میآمد خیالپردازی بود.
این گرانترین دسته باگ بکتستی است که میشناسم، چون بازدهی را چند واحد پایه جابهجا نمیکند؛ یک وضعیت نهاییِ برگشتناپذیر را از شبیهسازی حذف میکند. استراتژیای که میتواند به صفر برسد با استراتژیای که نمیتواند، دو استراتژی متفاوتاند؛ و بکتستی که مارجین را بررسی نمیکند نمیتواند بگوید شما کدام را دارید.
3 روشی که مدام میبینم اشتباه اجرا میشوند.
روش اشتباه اول: اهرم بهعنوان عددی که بازدهی را در آن ضرب میکنید
رایجترین شکل ماجرا. از سیگنالهایتان یک سری بازدهی محاسبه میکنید، تصمیم میگیرید با اهرم 10x معامله کنید و آن را در 10 ضرب میکنید. گاهی کمی پیچیدهترش میکنند — اندازه موقعیت برابر است با equity * leverage / price — اما وضعیت حساب هنوز فقط یک ضریب است که بالا و پایین میرود. خبری از مانده مارجین، سقف ارزش اسمی یا شرط توقف نیست.
خسارت پنهان است و به همین دلیل از بررسیها جان سالم به در میبرد. Sharpe نسبت به مقیاس ناورداست؛ پس وقتی اهرم را از 3x به 30x تغییر میدهید، عدد اصلیتان تکان نمیخورد و پژوهشگر نتیجه میگیرد اهرم یک پیچ تنظیم رایگان است که نوسان را با بازدهی معاوضه میکند. حداکثر افت سرمایه هم بهصورت خطی مقیاس میشود و بر اثر یک تصادف حسابی زیر 100% میماند، چون سری بازدهیهای ضربشده بهطور مجانبی به صفر نزدیک میشود و هرگز از آن عبور نمیکند. در نسخه واقعبینانه، یک روز با بازدهی -9% را در 12 ضرب کنید، به -108% میرسید؛ در نسخه سادهانگارانه، بسته به اینکه بازدهیها را مرکب کرده باشید یا جمع، نتیجه میشود «-108%، ولی منحنی سرمایه هنوز مثبت است». هر دو را دیدهام.
چیزی که از قلم افتاده این است که اهرم روی بازدهیهایتان اعمال نمیشود؛ روی وثیقه شما اعمال میشود و وثیقه مقدار محدودی است که صرافی هر ثانیه آن را زیر نظر دارد. وقتی از حداقل مارجین نگهداری پایینتر برود، دیگر موقعیت به شما تعلق ندارد.
نشانهاش این است: اگر شبیهسازی شما در هیچ سطحی از اهرم نمیتواند زیان کامل ثبت کند، اهرم را مدل نمیکند.
روش اشتباه دوم: محاسبه قیمت لیکوییدشدن فقط بر اساس اهرم
سطح دوم پیچیدگی، بررسی لیکوییدشدن را اضافه میکند که معمولاً چیزی شبیه این است: در اهرم 20x، حرکت نامطلوب 5% مارجین را از بین میبرد، پس موقعیت خرید را در قیمت ورود × 0.95 لیکویید کن. ساده، شهودی و از 4 جهت مختلف همزمان اشتباه است.
پلتفرمهای پرپچوال برای تعیین زمان پایان کارتان از تنظیم اهرم شما استفاده نمیکنند. آنها از نرخ مارجین نگهداری استفاده میکنند که بر اساس ارزش اسمی موقعیت و طبق جدول سطوح افزایش مییابد. شکل تقریبی BTCUSDT USDⓈ-M که با بازنگری صرافیها تغییر میکند:
| ارزش اسمی موقعیت (USDT) | نرخ مارجین نگهداری | حداکثر اهرم |
|---|---|---|
| 0 – 50,000 | 0.40% | 125x |
| 50,000 – 600,000 | 0.50% | 100x |
| 600,000 – 3,000,000 | 1.00% | 50x |
| 3,000,000 – 12,000,000 | 2.50% | 20x |
| 12,000,000 – 70,000,000 | 5.00% | 10x |
پس حرکت نامطلوبی که در موقعیت خرید ایزوله میتوانید تحمل کنید، تقریباً 1/L − MMR است، نه 1/L. در اهرم 20x و سطح دوم، میشود 5% − 0.5% = 4.5%. نیم درصد ناچیز به نظر میرسد. در BTC با قیمت 84,000، معادل 420 دلار اختلاف قیمت است و در یک ساعت پرتنش، همین 420 دلار تفاوت بین سایهای است که شما را از معامله بیرون انداخت و سایهای که این کار را نکرد. هر سایه یک شیر یا خط است و شما احتمال همه را به نفع خودتان تغییر دادهاید.
بعد هم کارمزدها. کارمزد taker ورود، همان لحظهای که سفارشتان پر میشود از مارجین کم میشود: 0.045% از ارزش اسمی 500,000، برابر با 225 USDT از مانده مارجین 25,000 است و قیمت لیکوییدشدن را پیش از آنکه موقعیت اصلاً کاری کرده باشد جابهجا میکند. فاندینگ هم همین اثر را دارد، پیوسته اعمال میشود و روی ارزش اسمی اهرمی بسیار بیشتر از حد انتظار پژوهشگران است:
موقعیتی که 30 روز هیچ کاری نمیکند — نه حرکت نامطلوبی دارد، نه معاملهای — نزدیک به یکپنجم وثیقهاش را از دست داده و قیمت لیکوییدشدنش بهطور محسوسی نزدیکتر شده است. سومین و چهارمین جهت اشتباه هم اینها هستند: با افزایش تدریجی موقعیت، سطح مارجین تغییر میکند؛ پس موقعیتی که در سطح 0.5% شروع شده و با میانگینگیری افزایشی به سطح 1.0% میرسد، قیمت لیکوییدشدن بدتری از محاسبه زمان ورود خواهد داشت؛ و مارجین کراس وثیقه را میان موقعیتها مشترک میکند، پس دوام موقعیت خرید BTC شما به وضعیت موقعیت فروش ETHتان بستگی دارد. اگر مارجین کراس را بهصورت چند موقعیت ایزوله و مستقل شبیهسازی میکنید، ساختار همبستگی حساب خودتان را وارونه در نظر گرفتهاید.
روش اشتباه سوم: تعیین تکلیف لیکوییدشدن با قیمت اشتباه، در زمان اشتباه و با قیمت اجرای اشتباه
فرض کنیم سطح محرک را درست پیدا کردهاید. حالا این پرسشها: کدام قیمت از آن عبور میکند، چه زمانی آن را بررسی میکنید و سفارش با چه قیمتی پر میشود؟
لیکوییدشدن با قیمت مارک فعال میشود؛ شاخصی از چند پلتفرم اسپات بههمراه مؤلفه مبنای هموارشده که عمداً طوری طراحی شده تا در برابر سایه قیمت در یک صرافی مقاوم باشد. حد ضرر شما بسته به تنظیماتتان احتمالاً با آخرین قیمت معاملهشده فعال میشود. این دو قیمت درست در حساسترین لحظه با هم اختلاف پیدا میکنند. هنگام آبشار لیکوییدشدن، آخرین قیمت پرپچوال ممکن است برای چند ده ثانیه 1–2% پایینتر از قیمت مارک منحرف شود. بکتستی که حد ضرر و لیکوییدشدن را هر دو بر اساس کمینه OHLCV اجرا میکند، پلتفرمی را مدل میکند که وجود خارجی ندارد.
هر دو خطا همزمان اینجا رخ میدهند و اثرشان همدیگر را خنثی نمیکند. اگر مبنا آخرین قیمت باشد، در سایههایی لیکویید میشوید که صرافی نادیده گرفته است. اگر مبنا قیمت مارک باشد، ممکن است از قلم بیفتد حالتی که خود قیمت مارک جابهجا شده — انحراف شاخص در یک پلتفرم اسپات راه واقعیِ لیکوییدشدن با قیمتی است که هرگز در پرپچوالی که معامله میکردید ثبت نشده.
بعد نوبت قیمت اجراست. موتورهای سادهانگارانه موقعیت را در قیمت لیکوییدشدن میبندند و زیان را مثل حد ضرر ثبت میکنند. اما در عمل، موتور لیکوییدشدن موقعیت را در قیمت ورشکستگی — سطحی که مارجین شما دقیقاً صفر میشود و از قیمت محرک بدتر است — به دست میگیرد و علاوه بر آن، کارمزد تسویه لیکوییدشدن هم دریافت میکند که بسته به سطح فرق دارد و در سطوح پایینتر نزدیک به 1% ارزش اسمی است. در اهرم 20x، 1% ارزش اسمی برابر با 20% از مارجین باقیمانده شماست. اگر موتور زیر قیمت ورشکستگی سفارش را اجرا کند، صندوق بیمه کسری را میپردازد؛ و در بعضی صرافیها، اگر صندوق خالی شود، زیان اجتماعیشده به بخش سودده دفتر سفارش هم میرسد. زیان محققشده شما فقط افت سرمایه تا قیمت لیکوییدشدن نیست؛ بیشتر است و این اضافهزیان دقیقاً در روزهایی بیشترین مقدار را دارد که دفتر سفارش آنقدر کمعمق بوده که بدترین نتیجه را رقم بزند.
پرسش زمانبندیِ مربوط به سازوکار درونباری اینجا با پیامدهای جدیتری مطرح میشود. اگر یک کندل 1-minute همزمان سطح برداشت سود و سطح لیکوییدشدن شما را در بر بگیرد، بکتستی که پیش از مارجین، خروجها را بررسی میکند با خیال راحت سود را ثبت میکند. صرافی مارجین را در هر بهروزرسانی قیمت مارک، تقریباً هر ثانیه و پیش از هر اتفاق دیگری که شاید انتظارش را داشتهاید بررسی میکند.
موتور باید چه چیزهایی را در عوض دنبال کند
هیچکدام از اینها به راهکار عجیبوغریب نیاز ندارد؛ باید وضعیتمحور باشد. حساب موجودیتی است با موجودی، نه یک سری بازدهی؛ و در هر کندل، به ترتیبی که صرافی بهروزرسانی میکند، بهروز میشود:
- موجودی کیف پول و PnL تحققنیافته، بهصورت جداگانه. نسبت مارجین برابر است با مارجین نگهداری تقسیم بر مانده مارجین، و مانده مارجین شامل PnL تحققنیافته است. یکیگرفتن این دو باعث میشود موقعیت زیانده وثیقه بیشتری از واقعیت نشان دهد.
- جدول سطوح هر نماد، با نسخهبندی بر اساس تاریخ. سطوح مارجین بازنگری میشوند. اجرای بکتست سال 2023 با سطوح سال 2026 نوعی نگاه به آینده است که بهسادگی به چشم نمیآید — معمولاً هم به نفع شماست، چون صرافیها در گذر زمان عموماً الزامات نمادهای اصلی را کاهش دادهاند.
- سری قیمت مارک، نه فقط کندلها. اگر نمیتوانید تاریخچه قیمت مارک را تهیه کنید، این را در نتایج اعلام کنید و از یک تقریب محافظهکارانه استفاده کنید. هرگز بیسروصدا قیمت آخرین معامله را جایگزین نکنید.
- بررسی مارجین در ابتدای ترتیب رویدادهای کندل، پیش از حد ضرر، حد سود، سیگنالها یا بازتنظیم سبد.
- اجرای سفارش با قیمت ورشکستگی، بهعلاوه کارمزد تسویه؛ نرخ کارمزد را از همان ردیف سطحی بخوانید که نرخ MMR را از آن میگیرید.
- یک وضعیت پایانیِ برگشتناپذیر. وقتی حقوق صاحبان سرمایه به صفر میرسد، اجرا تمام میشود. نه محاسبه مجدد، نه «فرض کنیم معاملهگر حساب را شارژ میکند»، نه ادامه سری با ارزش اسمی تازه.
همین مورد آخر بیشترین بحث را راه میاندازد. همیشه یکی میگوید یک میز معاملاتی واقعی وثیقه بیشتری واریز میکند، پس پایاندادن به شبیهسازی بیش از حد سختگیرانه و غیرواقعبینانه است. شاید. اما «این استراتژی جواب میدهد، اگر بعد از نابودشدن حساب مدام پول بیشتری به آن تزریق کنید» ادعایی است که باید دقیقاً با همین عبارت بیان شود و عمداً آزموده شود؛ با واریزیهای اضافی بهعنوان ورودی مشخص، نه اینکه پنهانی پیشفرض گرفته شوند. وقتی صادقانه روی کاغذش میآورید، بیشتر افراد میفهمند منظورشان این نبوده است.
فایده عملی همه اینها این است: وقتی همان استراتژی را روی کاغذ و در برابر صرافی زنده اجرا میکنید، نسبت مارجینی که صرافی گزارش میکند و نسبتی که شبیهساز شما محاسبه میکند باید در تمام طول روز با اختلاف 1 یا 2 واحد پایه با هم حرکت کنند. این تطابق را میتوان هر دقیقه و برای هر موقعیت باز، رایگان بررسی کرد. این ارزانترین آزمون همارزی در کل سامانه است و تقریباً هیچکس آن را اجرا نمیکند — و وقتی این دو عدد از هم فاصله میگیرند، حق با صرافی است و شما باگی دارید که بهتر است پیش از آنکه افت سرمایه پیدایش کند، پیدایش کنید.
← همهٔ مطالب


