بکتست یعنی یک قاعدهٔ معاملاتی را روی دادهٔ گذشته اجرا کنید و ببینید چه میشد. ابزار بکتست آپشنباز این کار را برای قراردادهای اختیار معامله (آپشن) بورس ایران انجام میدهد: قاعدهای مثل «سی روز مانده به سررسید، کال اسپرد صعودی یک پله بالاتر از قیمت روز» را روی همهٔ سررسیدهایی که تمام شدهاند اجرا میکند و هر سررسید را به یک معاملهٔ کامل تبدیل میکند.
کاری که نمودار سود و زیان برای «اگر همین الان وارد شوم چه میشود» میکند، این صفحه برای «اگر هر بار وارد میشدم چه شده بود» میکند. این مقاله میگوید مدلش چطور کار میکند، هر قیمت از کجا میآید، نتیجه را چطور بخوانید که خودتان را گول نزنید، و ابزار دربارهٔ چه چیزهایی ادعای دانستن نمیکند.
برای دیدن خودِ ابزار به بکتست استراتژی بروید. بکتست در همهٔ ساعتها جزو اشتراک حرفهای است؛ اشتراک پایه کافی نیست و پس از پایان ساعت معاملات هم برای همه باز نمیشود. هر اجرا روی حساب خودتان ذخیره میشود.
باز کردن بکتست و اجرای اول
بکتست صفحهٔ مستقل خودش را دارد و از نشانی بکتست استراتژی باز میشود. بالای صفحه سه تب هست: اجرای بکتست که فرم ساخت قاعده است، بکتست فرمول برای اجرای فرمولهای خودتان روی گذشته، و اجراهای قبلی که هر بکتستی را که گرفتهاید نگه میدارد.
برای اولین اجرا سه چیز کافی است: یک نماد پایه انتخاب کنید، یک قالب استراتژی بردارید، و در «ورود: چند روز مانده به سررسید» عددی بگذارید. بعد دکمهٔ «اجرای بکتست» را بزنید. بقیهٔ تنظیمات پیشفرضهای محافظهکارانه دارند و میتوانید فعلاً دستشان نزنید. اگر میخواهید اولین اجرا را قدمبهقدم روی یک مثال واقعی ببینید، آموزش بک تست استراتژی یک کال اسپرد صعودی روی خودرو را از ساخت قاعده تا خواندن نتیجه جلو میبرد.
راه دوم این است که از استراتژیای که همین حالا ساختهاید شروع کنید: در نمودار سود و زیان، از منوی عملیات گزینهٔ «بکتست این استراتژی» را بزنید. لگهای روی بوم به یک قاعده ترجمه میشوند — فاصلهٔ هر قیمت اعمال تا قیمت پایه به درصد در میآید — و فرم بکتست از قبل پر شده باز میشود. برای یک قرارداد تنها راه کوتاهتری هم هست: در منوی «نمودارها»ی کارت جزئیات هر قرارداد، ردیف «بکتست خرید این قرارداد» همین فرم را با یک پای خرید از همان قرارداد پر میکند.
چرا درصد و نه خودِ قرارداد؟ چون قراردادهای امروز مالِ سررسید امروزند؛ سررسیدهای گذشته نماد دیگری داشتند و بعضیشان اصلاً همان قیمت اعمال را نداشتند. قاعده باید چیزی باشد که در هر چرخه دوباره قابل ساختن است، نه یک فهرست نماد.
کدام سؤال را میپرسید
سه ابزار در آپشنباز به گذشته و آینده نگاه میکنند و هر کدام جواب سؤال متفاوتی هستند. قبل از اینکه وقت بگذارید، مطمئن شوید سراغ همانی رفتهاید که سؤال شما را جواب میدهد.
بکتست چرخهای — همین صفحه — یک قاعدهٔ ثابت را روی سررسیدهای تمامشده اجرا میکند. بکتست فرمول همان فیلتر یا ستونی را که در دیدهبان نوشتهاید روی روزهای گذشته دوباره اجرا میکند و میگوید چه روزهایی صدا میزد و بعدش چه شد. سبد آزمایشی در پرتفوی اصلاً به گذشته کار ندارد: از امروز به بعد را با پول خیالی و قیمت واقعی دنبال میکند.
چرخه چیست: یک قاعده روی هر سررسید
بکتستهای بازار سهام معمولاً زمان را روز به روز جلو میبرند و هر روز میپرسند «امروز سیگنالی هست؟». در بازار اختیار این مدل جواب نمیدهد، چون خودِ ابزار عمر دارد: هر زنجیره یک روز متولد میشود، چند هفته زندگی میکند و در سررسید تمام میشود. پس واحد طبیعی، روز نیست — چرخه است.
موتور برای هر زنجیرهٔ منقضیشده همین کار را میکند: از روز سررسید به عقب میشمارد تا به «چند روز مانده» برسد، آخرین جلسهای را که زنجیره در آن واقعاً درج شده بود پیدا میکند، لگها را همانجا باز میکند و تا خروج نگه میدارد. نتیجه، یک ردیف در جدول معاملههاست.
فایدهٔ این مدل مقایسهپذیری است: همهٔ معاملهها از فاصلهٔ یکسانی تا سررسید شروع شدهاند، پس ارزش زمانیشان با هم قابل مقایسه است و میانگین گرفتن از آنها معنا دارد. هزینهاش این است که تعداد نمونهها را خودِ بازار تعیین میکند، نه شما — و در بازار ما این تعداد کوچک است.
قیمت اجرا: چرا از صف، نه از آخرین معامله
مهمترین تصمیم هر بکتست اختیار این است که قیمت ورود و خروج را از کجا بردارد. در بازار ایران این تصمیم نتیجه را کاملاً عوض میکند، و دلیلش یک عدد است.
یعنی اگر بکتستی «آخرین قیمت معامله» را مبنا بگیرد، در دو روز از هر سه روز عددی را استفاده میکند که آن روز اصلاً معاملهای پشتش نبوده. بدتر: در سامانهٔ معاملات، قراردادی که معامله نشده باشد آخرین قیمتش را بهصورت یک مقدار نگهدارنده گزارش میکند، نه قیمت واقعی. بکتستی که این را نبیند، سودهایی نشان میدهد که هیچوقت قابل برداشت نبودند. (دربارهٔ سنجیدن نقدشوندگی یک قرارداد، چطور نقدشوندگی را بسنجیم را ببینید.)
پس پیشفرض ما صف سفارش پایان روز است — همان صفی که صفحهٔ زنجیره هم نشان میدهد — و سمتِ درست آن:
| گزینه | پیشفرض | چه میکند و کِی عوضش کنید |
|---|---|---|
| سرخط صف (قابل اجرا) | پیشفرض | خرید از سرخط عرضه و فروش از سرخط تقاضا — همان قیمتی که یک سفارش بازار واقعاً رویش میخورد. محافظهکارانهترین گزینه و تنها گزینهای که ادعای «قابل اجرا بودن» دارد. |
| میانهٔ صف | خاموش | میانگین بهترین خرید و فروش. از اجرای واقعی خوشبینانهتر است، چون فرض میکند سفارشتان وسط اسپرد پر میشود. برای مقایسهٔ دو قاعده با هم بد نیست؛ برای قضاوت دربارهٔ سود واقعی، نه. |
| آخرین معامله | خاموش | قیمت آخرین معاملهٔ همان روز. فقط وقتی معنا دارد که قرارداد پرمعامله باشد؛ روی قراردادهای کممعامله عددی را مبنا میگیرد که ممکن است ساعتها یا روزها قدیمی باشد. |
کنار این انتخاب یک تیک هست: «اگر این منبع خالی بود، سررسید را کنار بگذار (نه قیمت جایگزین)»، که بهصورت پیشفرض روشن است. روشن بودنش یعنی چرخهای که در روز ورودش صف نداشته اصلاً وارد نتیجه نمیشود و در فهرست کنارگذاشتهشدهها دلیلش نوشته میشود. اگر خاموشش کنید، موتور به ترتیب سراغ منبع بعدی میرود و آن معامله را «قیمت جایگزین» پرچم میزند.
وسوسهای که باید بشناسید: خاموش کردن این تیک تعداد معاملهها را بیشتر میکند و جدول را پرتر نشان میدهد. ولی چرخهای که صف نداشته، چرخهای است که واقعاً نمیشد در آن وارد شد. بیشتر شدن n با معاملههایی که در عمل ممکن نبودند، دقیقاً همان خودفریبی است که بکتست قرار بود جلویش را بگیرد.
سه قاعده برای انتخاب قیمت اعمال
قاعده باید در هر چرخه بتواند خودش قیمت اعمال را پیدا کند، چون نردبان قیمتهای اعمال در هر سررسید فرق میکند. سه راه برای گفتنِ «کدام اعمال» وجود دارد و هر سه در فرم هست:
- پله از ATM — روی نردبانِ همان روز میشمارد. صفر یعنی نزدیکترین اعمال به قیمت پایه، و هر واحد یک قیمت اعمال بالاتر یا پایینتر. این همان چیزی است که معاملهگر در ذهنش میگوید «یک پله بالاتر»، و نسبت به فاصلهٔ نامنظم اعمالها مقاوم است.
- درصد از قیمت — قیمت هدف را از قیمت پایهٔ روز ورود میسازد و نزدیکترین اعمال به آن را برمیدارد. وقتی میخواهید فاصله در همهٔ چرخهها به یک نسبت بماند، این درستتر از پله است.
- دلتا — قراردادی را برمیدارد که قدرمطلق دلتایش به عدد خواستهشده نزدیکتر است، با نوسان ضمنی همان روز و همان قرارداد. برای قاعدههایی که ذاتاً دربارهٔ احتمالاند مناسب است.
دو تنظیم دیگر هندسهٔ قالب را جابهجا میکنند: «فاصلهٔ بازوها (پله)» تعیین میکند دو پای یک اسپرد چند قیمت اعمال از هم دور باشند، و «جابهجایی نسبت به ATM (پله)» کل ساختار را با هم بالا یا پایین میبرد.
اگر قاعده به بیرون نردبان اشاره کند، آن چرخه کنار گذاشته میشود — نه اینکه نزدیکترین اعمال موجود جایش بنشیند. اگر «دو پله بالاتر» خواسته باشید و زنجیرهای فقط یک پله بالاتر داشته باشد، آن سررسید با دلیل «استرایک خواستهشده نبود» اجرا نمیشود. جایگزین کردنِ بیصدا یعنی نتیجهای که به دست میآورید مال قاعدهٔ دیگری است.
قالبهای آماده و لگهای سفارشی
هفده قالب آماده در فهرست «قالب استراتژی» هست و هر کدام یک توضیح یکخطی کنارش دارد: از تکپایهها (لانگ کال، لانگ پوت، نیکد کال و نیکد پوت) تا کاوردکال، پروتکتیو پوت و کولار، چهار اسپرد عمودی (کال اسپرد و پوت اسپرد، صعودی و نزولی)، لانگ و شورت استرادل، لانگ و شورت استرانگل، شورت ایرون کاندور و لانگ کال باترفلای. نام هر قالب همان نامی است که معاملههای نتیجه، نمودار سود و زیان و فهرست استراتژیها هم دارند. همان استراتژیهایی که در فهرست استراتژیهای اختیار معامله توضیح داده شدهاند.
اگر قالب آماده کافی نبود، دکمهٔ «ویرایش لگها» فهرست لگها را باز میکند و میتوانید سمت، تعداد، نوع و قاعدهٔ اعمال هر پا را جدا تنظیم کنید یا پای تازه اضافه کنید. با «بازگشت به قالب» به حالت اول برمیگردید.
یک قاعدهٔ بازار ایران که موتور اجازهٔ نقضش را نمیدهد: پای نماد پایه فقط خرید است. فروش استقراضی سهم در بورس تهران وجود ندارد، پس هر قاعدهای که پای پایه را بفروشد رد میشود — چیزی که در بکتستهای بازارهای دیگر آزاد است و نتیجهاش اینجا بیمعنی میشود.
ورود، خروج و مسیر روزانه
ورود بهطور پیشفرض یک روز است: آخرین جلسهٔ معاملاتی در فاصلهٔ خواستهشده تا سررسید که زنجیره در آن درج شده بود. (اگر بهجای یک تاریخ، شرطی در ذهن دارید — «هر وقت چنین موقعیتی پیدا شد» — بخش «شرط ورود» پایینتر همین کار را میکند.) از روز ورود به بعد، موتور هر جلسه موقعیت را دوباره قیمتگذاری میکند و مسیر روزانهٔ سود و زیان را نگه میدارد.
علامتگذاری روزانه عمداً محافظهکارانه است: یک پای خریداریشده به قیمتی سنجیده میشود که یک خریدار حاضر است بدهد، و یک پای فروختهشده به قیمتی که یک فروشنده میخواهد. یعنی همان سمتی از صف که بستن موقعیت رویش انجام میشود، نه سمت خوشبینانه.
چهار راه خروج وجود دارد و هرکدام زودتر برسد معامله را میبندد:
- حد ضرر و حد سود — بر حسب درصدِ سرمایهٔ درگیر. هر دو روی علامتگذاری روزانه سنجیده میشوند، نه روی قیمت لحظهای، چون بکتست هر روز را با قیمت پایان همان روز میسنجد.
- سقف روزهای نگهداری — بعد از این تعداد روز، موقعیت بسته میشود حتی اگر هیچ حدی نخورده باشد.
- سررسید — حالت پیشفرض. موقعیت تا آخر نگه داشته میشود و با قیمت پایانی نماد پایه در روز سررسید تسویه میشود؛ ارزش هر پا همان ارزش ذاتیاش میشود و کارمزد اعمال لگهای در سود هم کم میشود.
تفاوت این دو حالت در جدول نتیجه دیده میشود: در خروج زودهنگام، ستون «منبع» قیمت خروج را «سرخط صف» نشان میدهد؛ در نگهداری تا آخر، «تسویهٔ سررسید».
پایینتر در همان فرم، دو فیلد تاریخ هست: سررسیدها از و تا. خالی گذاشتنشان یعنی «هر سررسیدی که داده دارد»، و پر کردنشان بکتست را به یک بازهٔ مشخص محدود میکند — مثلاً فقط سررسیدهای شش ماه اخیر. این فیلتر روی تاریخ سررسید کار میکند نه تاریخ ورود، پس هر چرخه یا کامل داخل بازه است یا کامل بیرون. فایدهاش وقتی معلوم میشود که بخواهید بدانید قاعدهتان در بازار صعودی نیمهٔ اول سال جواب داده یا در کل دوره؛ هزینهاش این است که هر تنگ کردن بازه، تعداد نمونه را کمتر میکند.
شرط ورود: وقتی روز ورود یک شکل است، نه یک تاریخ
«سی روز مانده به سررسید» یک قاعدهٔ تقویمی است: هر چرخه در همان روز باز میشود، استراتژی آن روز هر شکلی که داشته باشد. ولی قاعدهای که معاملهگرها معمولاً در ذهن دارند شکل دیگری است — «هر وقت اسپردی پیدا شد که نسبت سود به زیانش از دو بیشتر بود و سربهسرش کمتر از پنج درصد با قیمت پایه فاصله داشت، بگیرش و روی بیست درصد سود ببندش». در این جمله روز ورود از قبل معلوم نیست؛ شرط است که آن را انتخاب میکند.
جعبهٔ شرط ورود (اختیاری) پایین فرم همین است: چهار صافی و یک بازه. هرکدام را خالی بگذارید بیاثر است، و اگر همهشان خالی باشند بکتست دقیقاً مثل قبل کار میکند.
| فیلد | چه چیزی را میسنجد |
|---|---|
| حداقل نسبت سود به زیان | حداکثر سود تقسیم بر حداکثر زیانِ همان موقعیت در سررسید، با کارمزد — همان دو عددی که نمودار سود و زیان برای همین ترکیب نشان میدهد. |
| حداکثر فاصلهٔ سربهسر تا قیمت پایه (٪) | نزدیکترین نقطهٔ سربهسر، چه بالای قیمت چه پایینتر، چند درصد با قیمت پایهٔ روز ورود فاصله دارد. عدد کوچک یعنی «برای سر به سر شدن، پایه لازم نیست زیاد حرکت کند». |
| حداقل حاشیهٔ امن زیر قیمت پایه (٪) | نزدیکترین سربهسر زیر قیمت پایهٔ روز ورود دستکم چند درصد پایینتر باشد؛ یعنی پایه دستکم همینقدر باید بریزد تا به سربهسر برسید. عدد را مثبت بنویسید: 10 یعنی سربهسر دستکم 10٪ پایینتر از قیمت پایه. فروشندهها (کاوردکال، فروش پوت) معمولاً همین را میخواهند؛ فیلد قبلی هر دو سو را میسنجد و این یکی فقط سمت پایین را. |
| سقف سرمایهٔ درگیر (ریال) | بودجه. اگر وجه تضمین فروشها را نقدی گذاشته باشید — بخش بعدی — این عدد وجه تضمین را هم در خودش دارد، نه فقط پرمیوم پرداختی. |
| بازهٔ جستوجو (روز) | چند روز عقبتر از روز ورود هم گشته شود. «30 روز مانده» بهعلاوهٔ بازهٔ 30 روز یعنی از 60 تا 30 روز مانده به سررسید. |
هر چهار صافی روی قیمتهای همان روزِ کاندیدا حساب میشوند، نه روی تخمین: موتور اول لگها را با همان قاعدهٔ اعمالی که بالاتر گذاشتهاید روی نردبان آن روز پیدا میکند، با قیمت قابل اجرای همان روز پرشان میکند، و بعد سود و زیان حداکثر و نقطههای سربهسر را از روی همان قیمتها میسنجد. یعنی شرط روی موقعیتی اعمال میشود که واقعاً همان روز قابل گرفتن بوده.
دو حالت مرزی را بدانید، چون در عمل پیش میآیند. ترکیبی که زیانش نامحدود است — مثل فروش کال بیپوشش — نسبت سود به زیان ندارد و هر کفی را رد میکند. ترکیبی که سودش نامحدود است — مثل خرید کال — هر کفی را میگذراند. و ترکیبی که اصلاً نقطهٔ سربهسر ندارد فقط وقتی از صافی سربهسر رد میشود که در قیمت پایهٔ همان روز زیانده نباشد. صافی حاشیهٔ امن همین شرط را سختگیرانهتر دارد: موقعیتی که همان روز در قیمت پایه زیانده است — مثل خرید کال بیرون از پول، که سربهسرش بالای قیمت است — حاشیهای زیر قیمت ندارد و رد میشود.
بازهٔ جستوجو همان یک روز را به چند روز تبدیل میکند. خالی که باشد، شرط فقط روی همان روزی سنجیده میشود که در «ورود: چند روز مانده به سررسید» نوشتهاید — برقرار نبود، آن سررسید کنار میرود. پر که باشد، موتور روزهای بازه را از قدیمی به جدید میگردد و اولین روزی را که هم قابل اجرا بوده و هم شرط را داشته، روز ورود میگیرد. جملهٔ زیر جعبه همیشه بازهٔ فعلی را به حروف مینویسد، پس قبل از اجرا یک بار بخوانیدش.
«اولین روزِ واجد شرط» عمدی است، نه «بهترین روز». بهترین روز را فقط کسی میتواند انتخاب کند که ادامهٔ ماجرا را دیده باشد؛ بکتستی که چنین کاری بکند عددی میسازد که در معاملهٔ واقعی تکرار نمیشود. به همین دلیل هم اگر بازهٔ جستوجو را بدون هیچ شرطی پر کنید، ورود در زودترین روز بازه انجام میشود، نه در روزی که بالا نوشتهاید.
سررسیدی که هیچ روزِ واجد شرطی نداشته باشد کنار گذاشته میشود، و در فهرست «سررسیدهای کنارگذاشتهشده» با دلیل «شرط ورود برقرار نشد» و همان عددی که کم آورده میآید — مثلاً «نسبت سود به زیان 1.12 کمتر از 1.5». این فهرست را جدی بگیرید: اگر بیشترِ سررسیدها آنجا نشستهاند، شرطتان از بازار سختگیرتر است و چند معاملهای که باقی مانده نمایندهٔ چیزی نیست.
تقسیم کار این جعبه با «جاروب پارامتر» ساده است: شرط ورود میگوید چه موقعیتی ارزش گرفتن دارد، و جاروب میگوید کدام مقدارِ یک پارامتر در گذشته بهتر جواب داده. اگر نمیدانید نسبت سود به زیانِ درست برای قاعدهتان چند است، همان مسیر همیشگی جواب میدهد: یک عدد محافظهکارانه بگذارید، اجرا کنید، و به تعداد معاملههایی که باقی مانده نگاه کنید.
وجه تضمین: نقدی یا تهاتر راهبردی
در هر استراتژیای که پای فروش دارد، بخش بزرگی از «سرمایهٔ درگیر» پول بلوکهشده بابت وجه تضمین است — و چون همهٔ درصدهای جدول نسبت به همین سرمایه حساب میشوند، نحوهٔ محاسبهاش مستقیماً درصد بازده را جابهجا میکند. دو حالت هست:
| حالت | پیشفرض | چه میکند و کِی عوضش کنید |
|---|---|---|
| نقدی برای هر لگ فروش | پیشفرض | هر پای فروش وجه تضمین خودش را جدا بلوکه میکند، دقیقاً مثل چیزی که در نمودار سود و زیان میبینید. سرمایهٔ بیشتری نشان میدهد و در نتیجه درصدهای کوچکتر و محافظهکارانهتری میدهد. |
| تهاتر راهبردی | خاموش | وجه تضمین را طبق پیوست «ضوابط وجه تضمین» دستورالعمل معاملات اختیار حساب میکند: اسپرد بدهکار و پروانهٔ خرید بدون وجه تضمین، اسپرد بستانکار به اندازهٔ اختلاف قیمت اعمال، کاوردکال با پوشش سهم بدون وجه تضمین، و استرادل و استرانگل فروش به اندازهٔ بزرگترِ دو پا بهعلاوهٔ پریمیوم پای دیگر. |
کدام درست است؟ هر دو — بسته به کارگزار شما. تهاتر راهبردی در خودِ دستورالعمل به «فراهم آمدن امکانات فنی» مشروط شده و همهٔ سامانهها راهبرد را تشخیص نمیدهند. حالت نقدی جوابِ بدبینانه است و هیچوقت شما را غافلگیر نمیکند؛ تهاتر راهبردی سقفِ خوشبینانه است. اگر عددی بین این دو میخواهید، هر دو را اجرا کنید و فاصلهشان را ببینید.
هر دو حالت فقط داخل یک سررسید معنا دارند. اسپرد تقویمی — دو پا با دو سررسید — در هیچ سامانهای راهبرد شناخته نمیشود و پای فروشش وجه تضمین کامل میگیرد.
خواندن خلاصه: هر عدد کنار تعداد خودش
بالای نتیجه هشت کاشی هست. قبل از معنی هرکدام، یک قاعده: اول به «معاملهها» نگاه کنید، بعد به بقیه. نرخ بردِ 67 درصد روی سه معامله یعنی دو تا از سه تا — که هیچ چیزی دربارهٔ معاملهٔ چهارم نمیگوید.
| کاشی | چه میگوید |
|---|---|
| معاملهها | چند سررسید واقعاً اجرا شد، و از آنها چند تا برد و چند تا باخت. این عدد، اعتبار بقیهٔ جدول است. |
| نرخ برد | سهم معاملههای سودده. زیرش نوشته میشود روی چند معامله حساب شده — عمداً، چون نرخ برد بدون تعداد یک عدد بیمعنی است. |
| میانگین بازده | میانگین درصد بازده هر معامله نسبت به سرمایهٔ درگیر خودش. میانه و انحراف معیار هم کنارش میآید تا معلوم شود میانگین را یک معاملهٔ پرت ساخته یا نه. |
| سود کل | جمع سود و زیان همهٔ معاملهها به ریال، با کارمزد. زیرش دو عدد میآید: میانگین ریالی هر معامله، و بازده وزنی — جمع سود تقسیم بر جمع سرمایهٔ درگیر. میانگین بازدهِ کاشی قبلی به هر معامله وزن یکسان میدهد، ولی بازده وزنی به معاملهٔ بزرگتر وزن بیشتری میدهد؛ وقتی سرمایهٔ معاملهها خیلی با هم فرق دارد، این دو عدد حتی میتوانند علامت مخالف داشته باشند و هر دو هم درست باشند. |
| بدترین معامله | بدترین و بهترین بازده تکی. بدترین را جلوتر از بهترین گذاشتهایم چون چیزی است که باید تحملش را داشته باشید. |
| ضریب سود | جمع سودها تقسیم بر قدرمطلق جمع زیانها. اگر هیچ معاملهٔ زیاندهی نبوده، بهجای بینهایت خط تیره نشان داده میشود. |
| انتظار ریاضی | ارزش یک معاملهٔ بعدی بر حسب درصد: نرخ برد ضرب در میانگین برد، منهای نرخ باخت ضرب در میانگین باخت. |
| بیشترین افت | عمیقترین افت سود تجمعی از قلهٔ خودش تا دره، به ریال و به درصدی از سرمایهٔ لازم: بیشترین سرمایهای که معاملههای همزمان با هم درگیر کردند. در اجرای چندنمادی سرمایهٔ معاملههایی که با هم باز بودهاند جمع میشود، پس این درصد دربارهٔ حساب شماست، نه جمع درصد تکتک معاملهها. |
زیر کاشیها منحنی سرمایه است: هر نقطه یک معاملهٔ بستهشده، به ترتیب تاریخ خروج. درصدهای منحنی، سود تجمعی به نسبت همان سرمایهٔ لازم است، پس عمیقترین افت این خط همان «بیشترین افت» بالاست؛ نشانگر را روی هر نقطه نگه دارید تا سود ریالیاش را هم ببینید. سود ترکیبی حساب نمیشود، پس شیب منحنی را باید بهعنوان «این قاعده در طول زمان چه کرد» خواند، نه بهعنوان رشد یک حساب واقعی. کنارش هیستوگرام توزیع بازده و دو جدول تفکیک — به تفکیک نماد و به تفکیک دلیل خروج — میگویند نتیجه از کجا آمده. اگر همهٔ سود از یک نماد است، همان را جدا بسنجید.
روی همان نمودار یک خط نقطهچین دوم هم کشیده میشود: خرید و نگهداری پایه — اینکه اگر پولِ هر معامله را همان روزها بهجای اجرای استراتژی صرف خرید خودِ نماد پایه میکردید و روز خروج میفروختید، چه میشد. این خط جواب سؤالی را میدهد که هیچ کاشیای نمیدهد: استراتژیای که سود داده ولی از خریدِ سادهٔ پایه عقب مانده، هنوز نگفته چرا باید سراغش بروید. هر دو خط با یک مبنا حساب میشوند — درصدی از سرمایهٔ لازم — پس فاصلهٔ میانشان را میشود مستقیم خواند.
بالای جدول معاملهها هم دکمهٔ CSV هست: همان ردیفهایی که روی صفحه میبینید، با همان ترتیب مرتبسازی و همان فیلتر «فقط پرچمدارها»، در یک فایل برای اکسل بیرون میآیند — با قیمت پایهٔ ورود و خروج و نام پرچمها در ستونهای خودشان.
معنی دقیق شاخصهایی مثل انتظار ریاضی و ضریب سود در شاخصهای عملکرد معاملهگر آمده؛ همانها در ژورنال هم روی معاملات واقعی شما حساب میشوند.
پرچمها: کدام عدد با فرض ساخته شده
هر معاملهای که جایی از محاسبهاش به یک فرض تکیه کرده باشد، پرچم میگیرد. پرچمها معامله را از جدول حذف نمیکنند — این تصمیم شماست، نه ابزار — ولی زیر کاشیها شمرده میشوند و در جدول معاملهها کنار هر ردیف مینشینند. پرچمی که روی همهٔ معاملههای یک اجرا نشسته (مثلاً «استرایک فرضی» وقتی همهٔ قراردادها قدیمیاند) یک بار در ردیف پرچمها با عبارتی مثل «روی همهٔ ده معامله» میآید و کنار ردیفها تکرار نمیشود، تا پرچمهایی که معاملهها را از هم جدا میکنند گم نشوند. با تیک «فقط پرچمدارها» میتوانید فقط همانها را ببینید.
| پرچم | یعنی چه | با آن چه کنید |
|---|---|---|
| قیمت جایگزین | دستکم یکی از قیمتهای ورود یا خروج از منبع خواستهشده نیامده و از منبع بعدی گرفته شده. | فقط وقتی ممکن است که تیک «کنار بگذار» را برداشته باشید. اگر روی معاملههای زیادی نشسته، یعنی آن قاعده در عمل قابل اجرا نبوده. |
| قیمت کهنه | در یکی از روزهای نگهداری، نه صفی بوده و نه معاملهای؛ پس قیمت روز قبل جلو برده شده. | روی خودِ سود و زیان نهایی اثر ندارد، ولی حد ضرر و حد سود روی همان قیمت کهنه سنجیده شدهاند. |
| تعدیل مجمع | قیمت اعمال یا اندازهٔ قرارداد در فاصلهٔ ورود تا خروج عوض شده — یعنی نماد پایه مجمع داشته. | نتیجه با شرایط روز ورود حساب شده. برای فهمیدن اینکه تعدیل دقیقاً چه میکند، تعدیل قیمت اعمال پس از مجمع را ببینید. |
| استرایک فرضی | برای آن روز، تاریخچهٔ قیمت اعمال ثبت نشده بوده و از قیمت اعمالِ امروز فرض شده است. | روی قراردادهایی که هیچوقت تعدیل نشدهاند بیضرر است؛ روی یک قرارداد تعدیلشده یعنی عدد را باور نکنید. |
| صف یکطرفه | خروج زودهنگام روی صفی انجام شده که فقط یک طرف داشته. | یعنی خروج در آن قیمت لزوماً شدنی نبوده. هرچه این پرچم بیشتر باشد، حد ضرر و حد سود کمتر قابل اتکا هستند. |
خواندن درست پرچمها این است: اگر از بیست معامله، هجدهتا «قیمت کهنه» دارند، آن قاعده روی قراردادهایی اجرا شده که عملاً معامله نمیشدند و نتیجهاش بیشتر دربارهٔ نبودِ بازار است تا دربارهٔ خودِ قاعده.
سررسیدهایی که اجرا نشدند
پایین نتیجه یک بخش جمعشده هست به اسم «سررسیدهای کنارگذاشتهشده» که هر چرخهٔ اجرانشده را با دلیلش فهرست میکند؛ تعدادشان و دلیلها بهاختصار در نوار آبی بالای نتیجه هم آمده است. این بخش به اندازهٔ خودِ نتیجه مهم است: اگر از بیست سررسید فقط سهتا اجرا شده باشند، آن سهتا نمایندهٔ چیزی نیستند.
| دلیل | یعنی چه |
|---|---|
| روز ورود نداشت | زنجیره در آن روزِ خواستهشده هنوز درج نشده بود. روی زنجیرههای کوتاهعمر پرتکرارترین دلیل است: اگر «ورود» را 30 روز مانده گذاشته باشید، زنجیرهای که فقط 20 روز عمر داشته اصلاً چنین روزی ندارد. |
| صف خالی | در روز ورود، آن سمت از صف که سفارش شما رویش میخورد خالی بوده. با تنظیم پیشفرض این یعنی آن چرخه اجرا نمیشود. |
| استرایک خواستهشده نبود | قاعدهٔ انتخاب اعمال به بیرونِ نردبان آن روز اشاره کرده — مثلاً «دو پله بالاتر» روی زنجیرهای که فقط یک پله بالاتر داشته. |
| حجم کم | حجم معاملات قرارداد در روز ورود از کفی که در «کف حجم روز ورود» گذاشتهاید کمتر بوده. |
| شرط ورود برقرار نشد | در جعبهٔ «شرط ورود» صافی گذاشتهاید و هیچ روزی از بازهٔ جستوجو آن را برآورده نکرده. دلیل، عددی را که کم آورده هم مینویسد — مثلاً «نسبت سود به زیان 1.12 کمتر از 1.5». |
| قیمت پایه نبود | نماد پایه در روز ورود قیمتی ثبت نکرده بود. |
| قیمت تسویه نبود | در روز سررسید، قیمت پایانی نماد پایه در دسترس نبوده، پس تسویه قابل محاسبه نیست. |
| سرمایهٔ صفر | سرمایهٔ درگیر صفر درآمده — ترکیبی که نه پولی میخواهد و نه وجه تضمینی، پس درصد بازدهش تعریف ندارد. |
یک اجرای واقعی، با اعدادش
برای اینکه این حرف انتزاعی نماند، یک اجرای واقعی روی دادهٔ خودمان: کال اسپرد صعودی با فاصلهٔ یک پله، ورود 30 روز مانده به سررسید، روی یکی از صندوقهایی که بیشترین تعداد سررسید را در دادهٔ ما دارد. از 16 سررسید، تنها 3 تا اجرا شدند: 8 سررسید 30 روز قبل هنوز زنجیرهشان درج نشده بود و 5 سررسید در روز ورود صف نداشتند.
نتیجهاش «نرخ برد 67 درصد» بود — عددی که در هر گزارشی خوب به نظر میرسد و در واقع یعنی دو معامله از سه معامله. با یک معاملهٔ دیگر، همان عدد میشد 50 یا 75 درصد. این دقیقاً همان چیزی است که کاشی «معاملهها» را اول جدول گذاشته: نه برای تزئین، برای اینکه بقیهٔ اعداد را در همان اندازهای بخوانید که هستند.
راه درست بزرگ کردن نمونه، خاموش کردن گاردها نیست؛ چند نماد را با هم انتخاب کنید یا فاصلهٔ ورود را کمتر بگذارید تا زنجیرههای کوتاهعمر هم روز ورود داشته باشند. جدول «به تفکیک نماد» بعدش میگوید نتیجه در هر نماد چطور بوده.
جاروب پارامتر: یک قاعده، چند مقدار
اولین سؤالی که بعد از خواندن نتیجه پیش میآید تقریباً همیشه یکی است: «اگر بهجای 30 روز، 20 روز مانده وارد میشدم چه میشد؟». راه دستیاش این است که عدد را عوض کنید و دوباره اجرا کنید — و بعد دو جدول را کنار هم بگذارید و با حافظه مقایسه کنید. جاروب پارامتر همین کار را یکباره انجام میدهد: یک پارامتر را انتخاب میکنید، چند مقدار برایش مینویسید، و ابزار همان قاعده را با هر مقدار یک بار اجرا میکند و همه را در یک جدول میگذارد.
جعبهاش پایین فرم است، زیر عنوان جاروب پارامتر (اختیاری). در کدام پارامتر یکی از شش گزینه را بردارید و در مقدارها (با کاما) بنویسیدشان — مثلاً 10، 20، 30، 45 — و اجرای جاروب را بزنید. بین 2 تا 8 مقدار قبول میشود.
| پارامتر | چه چیزی را میسنجد |
|---|---|
| روز مانده به سررسید | ورود در فاصلههای مختلف تا سررسید. پرکاربردترین جاروب، چون هم ارزش زمانی و هم تعداد چرخههای قابل اجرا را همزمان جابهجا میکند. |
| فاصلهٔ بازوها (پله) | پهنای ساختارهای دوپایه و چهارپایه. فقط وقتی کار میکند که از یک قالب آماده استفاده کرده باشید. |
| جابهجایی نسبت به ATM (پله) | کل استراتژی چند پله بالاتر یا پایینتر از قیمت روز بسته شود. |
| حد ضرر (٪ سرمایه) | حد ضررهای مختلف روی همان معاملهها. جواب سؤال «اگر زودتر میبریدم بهتر بود؟». |
| حد سود (٪ سرمایه) | همان کار برای سمت سود: زودتر بستن در مقابل نگه داشتن تا سررسید. |
| سقف روزهای نگهداری | بستن اجباری بعد از تعداد روز مشخص، بدون تغییر هیچ چیز دیگر. |
بقیهٔ تنظیمهای فرم در همهٔ ردیفها ثابت میمانند — و همین ثابت ماندن، کل فایدهٔ جاروب است. اگر همزمان دو چیز عوض شود، جدول دیگر نمیگوید کدامیک عدد را جابهجا کرده.
یک جاروب واقعی روی دادهٔ خودمان، با همان کال اسپرد صعودی و فاصلهٔ یک پله، روی صندوقی که 10 سررسید منقضیشده در بازهٔ ما دارد. در هر چهار مقدار، 7 سررسید اجرا شد و 3 سررسید کنار رفت:
| روز مانده به سررسید | معامله | نرخ برد | سود کل (ریال) | ضریب سود |
|---|---|---|---|---|
| 10 | 7 | 43 درصد | سود 3,574,211 | 2.19 |
| 20 | 7 | 57 درصد | سود 3,293,924 | 1.56 |
| 30 | 7 | 43 درصد | زیان 2,217,950 | 0.70 |
| 45 | 7 | 43 درصد | سود 726,989 | 1.15 |
خواندن این جدول دو درس دارد. اول اینکه پیشفرض 30 روز — عددی که فرم با آن باز میشود و بیشتر آدمها دستش نمیزنند — بدترین ردیف این جاروب است؛ بدون جاروب، احتمالاً همان یک اجرا را میدیدید و نتیجه میگرفتید که این استراتژی روی این نماد جواب نمیدهد. دوم اینکه ردیف 20 روزه بالاترین نرخ برد را دارد ولی سود کلش از ردیف 10 روزه کمتر است: نرخ برد و سود، دو چیزند. یک احتیاط هم لازم است: هر مقداری که امتحان میکنید یک بار بختآزمایی است، و بهترین ردیف جدول بخشی از برتریاش را به همین انتخاب مدیون است. چقدر، در بیشبرازش در بکتست حساب شده.
ردیفی که بیشترین سود کل را دارد برچسب بهترین سود کل میگیرد — ولی این برچسب یک واقعیت دربارهٔ گذشته است، نه یک توصیه. روی 7 معامله، فاصلهٔ ردیف اول و دوم بهسادگی میتواند حاصل یک معاملهٔ خوششانس باشد. ستون «معامله» را همیشه قبل از ستون سود بخوانید، و اگر مقداری هیچ معاملهای نساخته، ابزار صریح میگوید همهٔ سررسیدهایش کنار رفتهاند.
دو نکتهٔ عملی: جاروب ذخیره نمیشود — یک نگاه است، نه یک اجرا — و برای همین هر ردیفش دکمهٔ اعمال و اجرا دارد که مقدار را در فرم مینشاند و اجرای کاملش را با همهٔ معاملهها و پرچمها میسازد و ذخیره میکند. و اگر لگها را دستی ویرایش کرده باشید، جاروب روی «فاصلهٔ بازوها» و «جابهجایی نسبت به ATM» غیرفعال میشود: آن دو هندسهٔ قالباند و روی لگهای دستنویس معنایی ندارند.
مقایسهٔ دو اجرا و خروجی CSV
هر بکتستی که اجرا کنید در تب اجراهای قبلی ذخیره میشود، با تعداد معامله و نرخ برد و سود کل کنار نامش. اجرایی که بینام گرفته شده، با قاعدهاش نام میگیرد (مثلاً «کال اسپرد صعودی · خودرو · 30 روز»)، و با زدن نام هر اجرا نتیجهاش دوباره باز میشود و قاعدهاش هم در فرم بالای صفحه مینشیند تا همان را تغییر بدهید و دوباره اجرا کنید. کنار هر اجرا یک تیک هست: دو اجرا را که تیک بزنید، جدول مقایسهٔ دو اجرا بالای فهرست باز میشود و تعداد معامله، نرخ برد، میانگین بازده، سود کل، ضریب سود، بیشترین افت و تعداد سررسیدهای کنارگذاشته را ردیفبهردیف کنار هم میگذارد؛ در هر ردیف طرفی که جلوتر است پررنگ میشود.
تقسیم کار بین این دو ابزار ساده است: جاروب برای وقتی است که یک عدد را میخواهید بچرخانید، و مقایسه برای وقتی که چیزی عوض شده که عدد نیست — حالت وجه تضمین فروشها، قیمت اجرا، نماد پایه، یا خودِ قالب استراتژی. در این حالت دو اجرای جدا بگیرید، اسم توصیفی رویشان بگذارید، و کنار هم بگذاریدشان.
قبل از مقایسه، ردیف «تعداد معامله» را ببینید. دو اجرایی که روی تعداد متفاوتی سررسید حساب شدهاند، در بقیهٔ ردیفها هم قابل مقایسه نیستند — تغییرِ شما ممکن است اصلاً روی سود اثر نگذاشته باشد و فقط تعداد چرخههای قابل اجرا را عوض کرده باشد.
و اگر میخواهید خودتان روی معاملهها کار کنید، دکمهٔ CSV بالای جدول همان ردیفها را با ترتیب و فیلتر فعلی بیرون میدهد تا در اکسل یا هر ابزار دیگری تحلیلشان کنید.
از یک ردیف نتیجه به زنجیرهٔ امروز
کلیک روی هر ردیف جدول، جزئیات همان معامله را باز میکند: هر پا با قیمت ورود و منبعش، قیمت خروج و منبعش، وجه تضمین، و نمودار مسیر روزانهٔ سود و زیان از روز ورود تا خروج. همانجا بیشترین سود باز و بیشترین زیان بازِ آن معامله هم نوشته میشود — یعنی چقدر جلو بوده و چقدر عقب رفته پیش از آنکه بسته شود. یک خط هم هست به اسم شکل موقعیت در روز ورود: حداکثر سود، حداکثر زیان، نسبت این دو، و نقطهٔ سربهسر با فاصلهاش تا قیمت پایهٔ همان روز — همان چیزهایی که «شرط ورود» رویشان قضاوت میکند، چه شرطی گذاشته باشید چه نگذاشته باشید.
پایین همین پنجره دکمهٔ «ساخت روی زنجیرهٔ امروز» هست. همان قاعده را روی زنجیرهٔ فعلی همان نماد پیاده میکند — نزدیکترین سررسیدی که هنوز به اندازهٔ کافی روز دارد — و موقعیت را در نمودار سود و زیان باز میکند تا ببینید امروز چه شکلی میشود.
قراردادهای خودِ آن معاملهٔ گذشته قابل باز کردن نیستند و این عمدی است: آنها منقضی شدهاند و دیگر قیمتی ندارند. چیزی که قابل انتقال است، قاعده است نه نماد. یک نکته هم بدانید: اگر قاعدهٔ اعمالتان دلتایی باشد، روی زنجیرهٔ امروز به نزدیکترین اعمال به قیمت روز تبدیل میشود، چون نوسان ضمنی لحظهای در این صفحه در دسترس نیست.
بکتست فرمول دیدهبان
تب دوم برای کسانی است که در دیدهبان فرمول یا فیلتر نوشتهاند. سؤالی که جواب میدهد این است: «این فیلتری که نوشتهام، در ماههای گذشته چه روزهایی صدا میزد و بعدش چه شد؟»
کاری که میکند بازپخش است، نه گزارشسازی: برای هر روز معاملاتی در بازهای که انتخاب میکنید، زنجیرهٔ آن روز دوباره ساخته میشود — با همان قیمتها، همان صف، همان نوسان ضمنی و همان موقعیت باز — و فرمول شما با همان موتور و همان توابع کمکی دیدهبان رویش اجرا میشود. هیچ عددی حدس زده نمیشود؛ چیزهایی که برای گذشته نداریم، خالی میمانند.
برای فیلترها، «فعال شدن» یعنی فیلتر آن ردیف را نگه داشته. برای ستونها میتوانید یک «آستانهٔ فعالشدن ستون» بگذارید تا ردیفی فعال شمرده شود که مقدار عددی ستونش از آن آستانه کمتر نباشد؛ خالی گذاشتنش یعنی هر مقدار غیرخالی.
خروجی برای هر ردیف فعالشده، بازده «اگر همان روز میخریدید» است: خرید در سرخط عرضهٔ همان روز، و فروش در سرخط تقاضای یک، پنج و ده روز معاملاتی بعد — بهعلاوهٔ ارزش ذاتی در سررسید. بالای جدول، برای هر افق، سهم موارد مثبت و میانگین و میانه نوشته میشود، همیشه کنار تعداد موردی که قابل قیمتگذاری بوده.
این تب فقط فرمولهای خودتان را میبیند. اگر هنوز فرمولی نساختهاید، از فرمولهای آمادهٔ دیدهبان یکی را به فرمولهای خودتان اضافه کنید؛ از آن لحظه در این فهرست هم پیدا میشود.
فورواردتست: سبد آزمایشی
بکتست جواب «در گذشته چه میشد» است. سؤال مکمل — «از امروز به بعد چه میشود» — جای دیگری جواب داده میشود: سبد آزمایشی در پرتفوی.
سبد آزمایشی همان پرتفوی است با پول خیالی: موقع ساختنش سرمایهٔ اولیهٔ فرضی میگذارید، بعد هر استراتژی را با «ثبت آزمایشی» و با قیمت لحظهای سرخط بازار در آن ثبت میکنید، و از آن لحظه ژورنال آن را مثل یک معاملهٔ واقعی دنبال میکند. سررسیدها هم خودکار تسویه میشوند. پول خیالی هیچوقت با پول واقعی جمع نمیشود: چیپ «همهٔ سبدهای واقعی» سبد آزمایشی را جمع نمیزند و هر جا نامش بیاید نشان «آزمایشی» کنارش هست.
چرا هر دو لازماند؟ چون هرکدام نقطهکور دیگری را میپوشاند. بکتست تعداد نمونه میدهد ولی با فرضهای صف پایان روز کار میکند. فورواردتست فرض ندارد — قیمتها همان چیزیاند که در لحظه دیدهاید — ولی برای جمع شدن نمونه باید صبر کنید. قاعدهای که در بکتست جواب داده و در سبد آزمایشی هم دوام آورده، چیز دیگری است.
محدودیتها
- دادهٔ اختیار از 1404/09/26 شروع میشود. هر بکتستی از همان روز به بعد است و ابزار این تاریخ را بالای فرم مینویسد. دورهٔ نهماهه یعنی برای هر نماد چند ده سررسید در بهترین حالت — نه چند صد. نتیجهای که روی این دوره گرفته میشود دربارهٔ همین دوره حرف میزند، نه دربارهٔ هر بازاری.
- صف، عکسِ پایان روز است. صفی که مبنای قیمت قرار میگیرد آخرین وضعیت دفتر سفارش در پایان جلسه است، نه لحظهای که شما احتمالاً سفارش میگذاشتید. برای اختیارهای کمعمق این تفاوت میتواند بزرگ باشد.
- بکتست فقط روزانه است. ورود و خروج روی پایان روز انجام میشود، پس قاعدهای که به ساعت ورود یا خروج وابسته باشد در این ابزار قابل سنجش نیست. حد ضرر و حد سود هم روی قیمت روزانه سنجیده میشوند.
- تعدیل بعد از مجمع تاریخچه دارد، ولی نه از ابتدا. قیمت اعمال و اندازهٔ قرارداد از روزی که ثبتشان را شروع کردهایم تاریخدار هستند؛ برای روزهای قبل از آن، شرایطِ امروز فرض میشود و معامله پرچم «استرایک فرضی» میگیرد.
- اثر خودتان روی بازار حساب نمیشود. موتور فرض میکند حجم موردنیاز شما در سرخط موجود بوده. در قراردادی که سرخطش چند قرارداد عمق دارد، سفارش بزرگتر قیمت را جابهجا میکند و بکتست این را نمیبیند.
- بکتست پیشبینی نیست. این را هر متن جدی دربارهٔ بکتست میگوید و اینجا هم درست است: نتیجه میگوید یک قاعده در یک دورهٔ مشخص چه کرد. اگر روی همان داده آنقدر تنظیمات را عوض کنید تا عدد قشنگ شود، چیزی که ساختهاید یک قاعده نیست، یک توصیف از گذشته است.
جمعبندی
بکتست آپشنباز یک قاعده را روی سررسیدهای تمامشده اجرا میکند، قیمتها را از صف سفارش برمیدارد نه از آخرین معامله، کارمزد و وجه تضمین را حساب میکند، و هر جا مجبور شده فرضی بگذارد آن را پرچم میزند. سررسیدهایی که قابل اجرا نبودند حذف نمیشوند؛ با دلیلشان فهرست میشوند.
و یک قاعده که ارزش تکرار دارد: هر عدد را کنار تعداد معاملهاش بخوانید. ابزاری که فقط منحنی سبز نشان بدهد، دارد آرامش میفروشد؛ چیزی که واقعاً به کار میآید، دانستنِ این است که این نتیجه روی چند نمونه و با چه فرضهایی ساخته شده.
برای شروع، بکتست استراتژی را با یک نماد پرمعامله و یک قالب ساده باز کنید و اول به دو چیز نگاه کنید: تعداد معاملهها، و فهرست سررسیدهای کنارگذاشتهشده. بعد همان قاعده را با «سبد آزمایشی» از امروز به بعد هم دنبال کنید — و برای دیدن تاریخ سررسیدها و مجامعِ پیشرو، تقویم معاملاتی کنار دستتان باشد.
