بکتست گامبهگام (Walk-Forward) یعنی یک روش سرمایهگذاری را فقط با گذشته آموزش بدهید و روی روزهای بعدی، که ندیده، نمره بدهید؛ بعد جلو بروید و همین را تکرار کنید. در پرتفوی آپشن باز این بخش پایین تب بهینهسازی است و یک سؤال را جواب میدهد: وزنهایی که بهینهساز پیشنهاد میکند، اگر در گذشته واقعاً به کارشان میبستید، جواب میداد؟
بهینهساز بهترین وزن را روی همان روزهایی پیدا میکند که بعد با آنها قضاوتش میکنیم، پس جوابش توصیف گذشته است. بکتست سبد یک ترکیب ثابت را که خودتان دادهاید میسنجد. این بخش خود روش را میسنجد: بهینهسازی دورهای، با کارمزد، روی روزهایی که هیچ حلی ندیده. این مقاله میگوید پنجرهها چطور کار میکنند، با چه چیزی مقایسه میشود، جمعبندی را چطور بخوانید، و چه قاعدههایی جلوی خوشبینی را میگیرد.
برای دیدن خود ابزار به تب بهینهسازی بروید و تا پایین صفحه بیایید. این بخش مثل بقیهٔ پرتفوی با ورود به حساب باز است.
اجرای بکتست گامبهگام
در تب بهینهسازی، زیر جدول نمادها، بخش بکتست گامبهگام است. یک پنجره انتخاب کنید، مثلاً آموزش 120 / آزمون 20 روز، و اجرا کن را بزنید. هر اجرا دهها بار بهینهسازی میکند؛ برای همین با دکمه اجرا میشود، نه با هر تغییری که بالای صفحه میدهید.
بکتست همان سؤالی را میپرسد که بالای صفحه پرسیدهاید: همان هدف (و اگر هدف عددی میخواهد، همان سقف نوسان یا کف بازده)، همان نرخ بدون ریسک، همان «سقف وزن هر نماد»، همان نمادهای نامزد و همان قید گروهی. کف و سقفی که برای تکتک ردیفها در جدول نوشتهاید وارد نمیشود؛ فقط سقف سراسری و گروهها.
بکتست روی بلندترین بازهای اجرا میشود که نمادها تاریخچه دارند، تا حدود سه سال. نمادی که تاریخچهاش در این بازه کوتاه است کنار میرود و نامش زیر نتیجه، در فهرست «وارد بکتست نشد»، میآید. اختیارها همیشه در آن فهرستاند.
چرا جواب بهینهساز برای سنجیدن خودش کافی نیست
هر عددی که بالای تب بهینهسازی میبینید روی یک بازه حساب شده است: بهینهساز همان روزهایی را دیده که بعد با آنها قضاوتش میکنیم. این توصیف گذشته است، نه پیشبینی آینده. این دو خیلی راحت جای هم گرفته میشوند، مخصوصاً وقتی توصیف گذشته نسبت شارپ سهرقمی گزارش میکند.
بکتست گامبهگام همین فاصله را اندازه میگیرد. بازدهی که از آن درمیآید، بازدهی است که بهینهساز واقعاً میتوانست به دست بیاورد، اگر کسی هر چند وقت یک بار جوابش را اجرا میکرد و کارمزدش را میداد.
پنجرهها: آموزش و آزمون
بکتست یک پنجرهٔ آموزش برمیدارد، مثلاً 120 روز معاملاتی، و وزنها را فقط با همان حل میکند. بعد آن وزنها را روی پنجرهٔ آزمون، یعنی 20 روز بعدی، نگه میدارد و نمره میدهد. بعد همهچیز 20 روز جلو میرود و تکرار میشود. منحنیای که در نتیجه میبینید از پشت سر هم گذاشتن همین روزهای آزمون ساخته شده است.
| پنجره | یعنی چه |
|---|---|
| آموزش 120 / آزمون 20 روز | پیشفرض، و همان چیزی که در ادبیات مالی بیشتر به کار میرود: شش ماه گذشته، بازتعادل ماهانه. |
| آموزش 60 / آزمون 20 روز | حافظهٔ کوتاهتر: زودتر به بازار امروز واکنش نشان میدهد، ولی تخمینهایش پرنوسانتر است. |
| آموزش 250 / آزمون 20 روز | یک سال گذشته: تخمین پایدارتر، با این خطر که رژیمی را در خود داشته باشد که دیگر برنمیگردد. |
| آموزش 120 / آزمون 60 روز | بازتعادل هر سه ماه: کارمزد کمتر و جابهجایی کمتر. |
| آموزش 120 / آزمون 120 روز | بازتعادل هر شش ماه. پنجرهها کمتر میشوند و شمارش برد و باخت پنجرهها هم به همان نسبت کموزنتر است. |
شبکهٔ پنجرهها از تازهترین روز چیده میشود. اگر روزها بر پنجرهها بخشپذیر نباشند، باقیمانده از قدیمیترین سر کنار میرود، نه از روزهای اخیر که خواننده بیشتر به آنها اهمیت میدهد. بیشتر از 40 پنجره هم ساخته نمیشود، باز از سر تازه.
منحنیها: با چه چیزی مقایسه میشود
نتیجهٔ بهینهساز فقط وقتی معنی دارد که کنار چیزی گذاشته شود که باید از آن جلو بزند. پس چند منحنی از یک نقطه شروع میکنند:
- وزن بهینه، بازتعادلی: همان راه بالا، با کارمزد هر بازتعادل کمشده.
- وزن فعلی، دستنخورده: سبدی که همین حالا دارید، یک بار خریده و رها شده. چون هیچوقت بازتعادل نمیشود، کارمزدی هم نمیدهد. این همان گزینهٔ «هیچ کاری نکن» است، و بهینهسازیای که بعد از کارمزد از آن عقب بماند، خرجش را درنیاورده.
- وزن مساوی، بازتعادلی: پول به تساوی بین همان نمادها، و در همان تاریخها به تساوی برمیگردد. معیار سرراستی که مدل میانگین-واریانس بهسختی از آن جلو میزند، و جواب این سؤال است: «سود از ماتریس کوواریانس آمد یا فقط از متنوعشدن؟»
جدول زیر نمودار دو ردیف دیگر هم دارد: معکوس نوسان و برابری ریسک، همان دو سبد مقایسه که بازده مورد انتظار نمیخوانند. این دو هم در هر پنجره از نو ساخته میشوند، از همان نوسان و همبستگیهایی که پنجرهٔ آموزش دیده، و با همان کارمزد بازتعادل میشوند. دکمهٔ سبدهای مقایسه روی نمودار خطشان را روی نمودار میآورد. فاصلهٔ وزن بهینه با این دو همان چیزی است که بازده مورد انتظار بهینهساز به دست آورد، یا از دست داد. اگر هدف «برابری ریسک» باشد، ردیف برابری ریسک همان وزن بهینه است.
یک خط نقطهچین هم هست که عمداً از جنس بقیه نیست: سبد پیشنهادی امروز (دروننمونه). همان وزنهایی است که بالای صفحه پیشنهاد شده، از اول دوره نگه داشته و در همان تاریخها با همان کارمزد بازتعادل شده. این وزنها با دیدن همین روزها ساخته شدهاند، پس این خط وعدهٔ روی کاغذ است، نه نتیجهای که کسی میتوانست بگیرد. در جدول کمرنگ میآید و در هیچ شمارشی حساب نمیشود. فاصلهاش تا منحنی وزن بهینه دقیقاً همان بخشی از وعده است که بهینهسازی در عمل نمیتواند برساند. در حالت وزن دستی نامش «سبد فرضی امروز (دروننمونه)» است. اگر بخشی از آن سبد وارد بکتست نشده باشد، مثل اختیار یا نمادی با تاریخچهٔ کوتاه، باقیاش به صد درصد مقیاس میشود و زیر نمودار نوشته میشود چه سهمی از آن آمده.
جمعبندی: معیار هر هدف و شمارش پنجرهها
جدول زیر نمودار، بازده کل دوره، بازده سالانهشده، نوسان، شارپ، بیشترین افت و کارمزد پرداختی هر منحنی را کنار هم میگذارد. جمعبندی زیرش میگوید کدام بهتر بود، با معیاری که هدف انتخاب کرده است. سبدی که برای آرامبودن ساخته شده، اگر با بازده سنجیده شود، موفقیتش شکست به نظر میرسد.
| هدف | معیار جمعبندی |
|---|---|
| بهترین نسبت شارپ، بیشترین سورتینو | نسبت شارپ |
| کمترین نوسان، کمترین نوسان با کف بازده، برابری ریسک، کمترین زیان در دُم | نوسان سالانه |
| کمترین افت از سقف | بیشترین افت از سقف |
| بیشترین بازده، بیشترین بازده با سقف نوسان | بازده کل دوره |
زیر جمعبندی، شمارش پنجرهها میآید، با همان معیار و بعد از کارمزد: در چند پنجره وزن بهینه از وزن مساوی و از سبد دستنخورده بازده بیشتری داشت، یا برای هدفهای آرام، در چند پنجره نوسانش کمتر بود. همین شمارش برای معکوس نوسان و برابری ریسک هم نوشته میشود. یک برد کلی که از دو سه پنجرهٔ استثنایی آمده، با بردی که در بیشتر پنجرهها تکرار شده فرق دارد.
سه نما و پایداری وزنها
بالای نمودار سه دکمه هست. رشد سرمایه همین منحنیهاست. افت از سقف هر منحنی را نسبت به بالاترین ارزش قبلی خودش میکشد و جدول بدترین افتها را برای سبدی که با دکمههای بالای جدول انتخاب کنید میآورد: پنج افت بزرگ، از چه روزی تا چه کفی، کی به سقف برگشت، و چند روز معاملاتی تا کف و تا بازگشت طول کشید. ترکیب وزنها وزنی را که بهینهساز در شروع هر پنجرهٔ آزمون به هر نماد داده، بهشکل ستونهای روی هم نشان میدهد. این وزنِ هدف است: بین دو بازتعادل، وزن واقعی هر نماد با قیمتش جابهجا میشود و آن جابهجایی در این نمودار نیامده.
بخش پایداری وزنها در طول بکتست برای هر نماد کمینه، میانگین و بیشینهٔ وزنی را که گرفته نشان میدهد. نمادی که وزنش از پنجرهای به پنجرهٔ بعد بین صفر و صد بالا و پایین میپرد، انتخاب نشده، برازش شده. یک جواب تکپنجرهای این را اصلاً نشان نمیدهد.
گزارش کامل این بکتست
زیر نتیجه، کارت گزارش کامل این بکتست با دکمهٔ نمایش گزارش باز میشود. همین منحنیها را با همان گزارشی میخواند که بکتست سبد برای هر سبد میسازد: جدول کامل معیارها، بازده هر ماه و هر سال شمسی، افتها و زمان بازگشتشان، رفتار در دورههای بحران، مقایسه با شاخص کل و بازده غلتان. هر بخش آن گزارش در مقالهٔ بکتست سبد توضیح داده شده است.
رشد هر خط از 100 واحد شروع میشود، چون این بکتست پول ریالی ندارد. نسبت شارپ در این گزارش و در جدول بالای آن یک تعریف دارد، همان تعریف پنل ریسک و بازده: میانگین بازده روزانه که سالانه شده.
پنج قاعدهای که این بکتست را صادق نگه میدارد
- بازدههای مورد انتظاری که در جدول نوشتهاید وارد نمیشوند. آن عددها را امروز نوشتهاید؛ دادنشان به حلی که تاریخش پارسال است، نگاهکردن به آینده است با لباس ترجیح. هر حل فقط چیزی را میبیند که پنجرهٔ آموزش خودش اندازه گرفته: بازده مورد انتظار هر نماد همان رشد سالانهشدهٔ پنجرهٔ آموزش است، با همان سقف نرمی که پیشفرض بالای صفحه دارد.
- کارمزد واقعاً کم میشود. از جدول کارمزد همین نمادها، روی هر بازتعادل. بازده هر پنجره هم بعد از کارمزدی حساب میشود که شروعش خورده، پس پنجرهای که کارمزد سودش را برده «برد» شمرده نمیشود. بازتعادل هر 20 روز یعنی سالی دوازده تا سیزده بار پرداخت همین کارمزد.
- فقط معاملهای که بازار واقعاً پر میکرد. نمادی که روز بازتعادل معامله نشده، متوقف بوده یا بازار بسته بوده، نه خریده میشود نه فروخته، و وزنش همانجا که رسیده میماند. روزهایی هم که هیچکدام از نمادهای بکتست معامله نشدهاند از تقویم کنار گذاشته میشوند تا نوسان کمتر از واقعیت دیده نشود. بی این قاعده، در تعطیلی اسفند 1404 تا اردیبهشت 1405 بهینهساز صندوقی را «میخرید» که هیچکس نمیتوانست بخرد. تعداد هر دو، روزهای کنارگذاشته و سفارشهایی که پر نمیشد، زیر نمودار نوشته میشود.
- فقط سهم و صندوق. دادهٔ روزانهٔ اختیار معامله بهقدر کافی بلند نیست و قراردادی که سررسید میشود منحنی پیوسته ندارد. یک بکتست 120 روی 20 روی اختیارها دو سه پنجره میشود، که اندازهگیری نیست. برای سنجیدن قاعدههای آپشن، بکتست استراتژی ساخته شده است.
- زیر سه پنجره چیزی کشیده نمیشود. دو پنجره با خوشحالی گزارش میکند «بهینهساز صد درصد مواقع برنده است».
و آنچه این تست نمیگوید: نمادها همانهاییاند که امروز در سبدتان هستند، یعنی خودتان با دانستن امروز انتخابشان کردهاید. پس نتیجه میگوید «روی همین نمادها، وزن بهینه از وزن مساوی بهتر بود یا نه». نمیگوید بهینهساز نماد برنده پیدا میکند. این دو جملهٔ خیلی متفاوتاند.
بعد از اجرا: نتیجهٔ کهنه، نتیجهٔ ناخوشایند
هر نتیجه مال همان تنظیماتی است که با آن اجرا شده. اگر بعد از اجرا سبد، هدف، نرخ بدون ریسک، سقف وزن، گروهها یا پنجره را عوض کنید، یا جواب بالای صفحه عوض شود، نتیجه کمرنگ میشود، برچسب میخورد و دیگر به برگهٔ چاپ / PDF و فایل خروجی اکسل نمیرود تا دوباره اجرایش کنید. نتیجهٔ تازه در هر دو میآید، با جدول هر منحنی و بازده هر پنجره.
اگر نتیجه ناخوشایند درآمد، همان نتیجه است: با این نمادها و این بازه، بازتعادل بهینهسازیشده کارمزدش را درنیاورده. دو واکنش معقول دارد: سقف وزن بگذارید تا جوابها کمتر گوشهای شوند، یا پنجرهٔ آزمون را بلندتر کنید تا کمتر جابهجا شود. اگر وزن بهینه از معکوس نوسان یا برابری ریسک هم عقب ماند، بار اصلی را عددهای بازده مورد انتظار میکشیدند؛ هدفی را امتحان کنید که به آنها تکیه ندارد، مثل «کمترین نوسان» یا «برابری ریسک».
جمعبندی
بهینهساز میگوید روی گذشته چه وزنی بهترین بود؛ بکتست گامبهگام میگوید اگر هر بار فقط با گذشته تصمیم میگرفتید و کارمزدش را میدادید، چه میشد. جواب دوم همیشه از اولی فروتنتر است، و همان است که میشود به آن تکیه کرد. برای شروع، تب بهینهسازی را باز کنید، هدفتان را انتخاب کنید و پایین صفحه با پنجرهٔ پیشفرض اجرا کنید. ساختن خود جواب در مقالهٔ مرز کارا و بهینهسازی وزن سبد آمده است.
