معاملهگری با الگوتریدینگ: آزمون مدلها
در مقاله پیشین به چیستی الگوتریدینگ پرداختیم. هنگام استفاده از الگوتریدینگ، ما کار را به الگوریتمهای خودکار میسپاریم. این الگوریتمها، بازارها را بررسی میکنند و در صورت کشف فرصتهای کسب سود، وارد معاملهشده و سود به دست میآورند. الگوریتمها و مدلها، مهمترین نقش را در الگوتریدینگ بازی میکنند. به همین دلیل اطمینان از صحت عملکرد
در مقاله پیشین به چیستی الگوتریدینگ پرداختیم. هنگام استفاده از الگوتریدینگ ، ما کار را به الگوریتمهای خودکار میسپاریم. این الگوریتمها ، بازارها را بررسی میکنند و در صورت کشف فرصتهای کسب سود، وارد معاملهشده و سود به دست میآورند. الگوریتمها و مدلها، مهمترین نقش را در الگوتریدینگ بازی میکنند. به همین دلیل اطمینان از صحت عملکرد و آزمایش آنها برای افزایش اطمینان و سرمایهگذاری بهواسطه آنها بسیار مهم است.
یکی از مهمترین کارهایی که برای بررسی عملکرد یک الگوریتم معاملاتی انجام میشود، آزمون گذشته (Backtesting) است. ما در این مقاله میخواهیم به آزمون گذشته، خطاها و جانبداریهایی که هنگام توسعه یک الگوریتم معاملاتی ممکن است با آن روبهرو شویم، بپردازیم.
از مدل تا تجربه
تقریبا تمامی تحقیقات مربوط به توسعه الگوتریدینگ (Algorithmic Trading) یا معاملات الگوریتمی، تجربی هستند. الگوریتمها در الگوتریدینگ بر پایه شواهد و تجارب شکل میگیرند. این کار تا حدی در تضاد با تحقیقات نظری است. تحقیقات نظری عموما بر پایه فرضها، منطق و ریاضی انجام میشوند.
برای ساخت یک سیستم الگوتریدینگ ما معمولا کار را با رهیافت نظری آغاز میکنیم. برای مثال با یک مدل سریهای زمانی (time-series model) که فکر میکنیم فرآیند تولید دادهها در بازار را توصیف میکند، کار را شروع میکنیم. پسازآن، از تکنیکهای تجربی برای آزمودن درستی فرضها و چهارچوب ساختهشده بهره میبریم.
نهتنها یک مدل ریاضی بلکه بر پایه هیچ مدل صرفا نظری، نمیتوانیم در بازار سرمایهگذاری کنیم.
برای اینکه بتوانیم یک سرمایهگذاری جدی بر پایه یک مدل یا الگوریتم انجام دهیم، باید مدل ریاضی را بیازماییم و نتایج آن را با دادههای واقعی مقایسه کنیم. نهتنها یک مدل ریاضی بلکه بر پایه هیچ مدل صرفا نظری، نمیتوانیم در بازار سرمایهگذاری کنیم.
بهجرئت میتوان گفت هیچکسی تا به امروز نتوانسته است صرفا بر پایه منطق و استدلال، یک مدل درست که بتواند بازار را بهخوبی پیشبینی کند ارائه دهد. ازاینروی تحقیقات تجربی همواره نقش مهمی در ساخت سیستمهای الگوتریدینگ ایفا میکنند.
چرا آزمون مدلها مهم است؟
انجام تحقیقات تجربی مستلزم مشاهدات بسیاری است. بعضی وقتها ما به هزاران مشاهده برای انجام یک آزمایش روی دادههای بازار نیاز داریم. ازآنجاییکه دادههای بازار بیدرنگ (Real-time) به دستمان میرسند، شاید مجبور شویم مدت زمان زیادی را برای انجام یک آزمایش صرف کنیم.
اگر سیستم آزمایشی خراب شود یا ایده جدیدی به ذهنمان برسد احتمالا لازم داریم که از ابتدا دوباره آزمایش را انجام دهیم. واضح است که این روش برای آزمایش بسیار غیر بهینه است.
آزمون گذشته این امکان را فراهم میآورد که بتوانیم بهسرعت متغیرهای زیادی را در ایدهها و مدلهای خود بیازماییم.
یک روش بسیار بهینه برای شبیهسازی و انجام آزمایش، استفاده از دادههای گذشته بازار است. در حوزه الگوتریدینگ این نوع از شبیهسازی واقعیت، آزمون گذشته نام دارد. آزمون گذشته این امکان را فراهم میآورد که بتوانیم بهسرعت متغیرهای زیادی را در ایدهها و مدلهای خود بیازماییم و نتایج بهینه و بلادرنگی را در مورد نحوه عملکرد آنها درگذشته به دست آوریم.
این کار در ظاهر بسیار ساده به نظر میآید، اما در واقعیت، آزمودن دادههای گذشته آکنده از پیچیدگیها و سختیها است. ازاینروی ما در این مقاله میخواهیم تصویری از این آزمونها برای خلق مدلها و الگوریتمیهای معاملاتی ارائه دهیم.
چرا آزمون گذشته؟
قبل از اینکه در آزمون گذشته و کاربردهای عملی آن غرق شویم، بگذارید کمی دراینباره بحث کنیم که چرا انجام آزمون روی دادههای گذشته ضروری است. پیشازاین گفتیم که آزمون گذشته در الگوتریدینگ این امکان را به ما میدهد که بتوانیم تحقیقات تجربی را بهسرعت و کاملا بهینه انجام دهیم.
اما یک سؤال مطرح میشود. چرا چنین تحقیقاتی لازم هستند؟ همه میدانیم هنگامیکه شاخص قدرت نسبی (Relative Strength Index or RSI) زیر ۳۰ است باید سهام بخریم. مگر نه؟
خوب این پرسشی بدیهی و بدون نیاز به پاسخ است؛ اما بگذارید یکی از خطرناکترین شیوههای فکری و ذهنی را که میتواند در خفا ما را به دام بیندازند، روشن کنیم.
هر کس هندسه نمیداند وارد نشود
نکته جالب این است که کسانی که تحصیلات دانشگاهی آنها فیزیک، ریاضی، کامپیوتر و مهندسی بوده، پیشزمینههای بهتری به لحاظ ذهنی و داشتن دانش موردنیاز برای ورود به حوزه الگوتریدینگ دارند؛ اما دانشآموختگان رشتههایی همچون اقتصاد و مالی برای ورود به حوزه الگوتریدینگ نیاز به مطالعات زیادی دارند.
بارها پیشآمده کسانی که پیشزمینه علمی غیر از علوم پایه، ریاضیات و آمار دارند بهصورت ناخودآگاه در دام شیوه خطرناک فکری که میخواهیم بگوییم، افتادهاند.
بازارها بههیچوجه تعیینی نیستند. حداقل آنقدری که ما بازارها را میشناسیم و در مورد آنها اطلاعات داریم، تعیینی نیستند.
در دنیای تعیّنی (Deterministic) پدیدههای طبیعی قابلردیابی هستند و میتوان آنها را با معادلات ریاضی پیشبینی کرد. معادلات حرکت نیوتون یکی از این مثالها است. با چنین قوانینی میتوان یک رویداد فیزیکی را با استفاده از شرایط اولیه آن، کاملا پیشبینی کرد. این معادلات ممکن است ساده یا پیچیده باشند؛ اما درنهایت میتوان یک روش حل دقیق یا تقریبی برای آنها پیدا کرد.
اما بازارها بههیچوجه تعیّنی نیستند. حداقل آنقدری که ما بازارها را میشناسیم و در مورد آنها اطلاعات داریم، تعیّنی نیستند. به نظر بدیهی میآید. نه؟
در بازار چه خبر است
اگر شاخص قدرت نسبی زیر ۳۰ باشد، حتما به معنی افزایش بلادرنگ قیمت نیست. حتی اگر قیمت هم بالاتر برود، بهطورقطع نمیتوان گفت که به دلیل کاهش شاخص قدرت نسبی به کمتر از ۳۰ رخداده است. گاهی قیمت به دلیل کاهش این شاخص به کمتر از ۳۰، افزایش مییابد، گاهی سقوط میکند و گاهی تغییری نمیکند.
ما بههیچوجه نمیتوانیم با اطمینان چنین دلیلی را برای افزایش قیمت بیان کنیم. معمولا حتی دلیل پشت زمینه این اتفاق را هم نمیتوانیم توصیف کنیم. تنها چیزی که با اطمینان میتوانیم بگوییم این نکته است که افزایش قیمت به این دلیل رخداده که تعداد خریداران بیشتر از فروشندگان است.
تنها چیزی که با اطمینان میتوان گفت این نکته است که افزایش قیمت به این دلیل افزایش تعداد خریداران و کاهش فروشندگان صورت گرفته است.
بسیاری از افراد این واقعیت را قبول دارند اما راستش کمی متناقض عمل میکنند. آنها بااینکه معتقد هستند بازارها غیر تعینیاند؛ اما بااینهمه، چند قانون معاملاتی را با اطمینان همواره استفاده میکنند؛ زیرا آن قوانین را صرفا در کتاب یا سایتی در اینترنت خواندهاند.
دلیل چنین رفتاری ساده است. طبیعت انسانها این کار را میپسندد. این خط فکری خاص بسیار جذابیت دارد؛ زیرا چنین فکری به ما میگوید که با انجام تکراری یک کار ساده میتوان پولدار شد؛ اما این یک دام خطرناک است. شما هم ممکن است در این دام گرفتار شوید. اعتقاد داشته باشید که بازارها تعیّنی نیستند اما هیچوقت فرضهای پایهای سیستم الگوتریدینگ خود را زیر سوال نبرید.
در مکان و زمان درست
برخی از قواعد میتوانند سودده باشند. برخی دیگر ضررده هستند؛ اما سوددهی برخی قواعد به این دلیل نیست که توانستهاند یک پدیده طبیعی را بهدقت توصیف کنند. سوددهی آنها به این دلیل است که توانستهاند یک خصوصیت از بازار را درزمانی به دست آورند که سود بیشتری نسبت به ضررش تولید میکند.
هیچوقت نمیتوان با اطمینان فهمید، آیا یک معامله خاص سودده است یا نه؛ اما در طولانیمدت متوجه خواهید شد که مواقعی خوششانسی کمیاب هستند. آزمودن دادههای گذشته، ابزاری برای انجام آزمایش و جمعآوری اطلاعاتی که به شما برای تایید یا رد نتایج کمک میکنند، فراهم میآورد.
شبیهسازی در مقابل واقعیت
در سطور بالا عبارت «شبیهسازی واقعیت» و «چگونگی عملکرد مدل در دادههای گذشته» را بیان کردیم؛ اما میدانیم که هیچ شبیهسازی دقیقا مثل خود واقعیت نخواهند بود. جرج باکس (George Box) متخصص آمار جمله معروفی دارد که میگوید: «همه مدلها اشتباه هستند؛ اما برخی مفیدند».
برای مفید بودن لازم است مدلها بهاندازه کافی دقیق باشند. به بیان درستتر ما دوست داریم شبیهسازی باهدف موردنظر تناسب داشته باشد. ابزارهای مورداستفاده در هر استراتژی متفاوت هستند. درنتیجه شبیهسازی هر استراتژی نیز متفاوت است.
برای آزمودن الگوریتم روی دادههای گذشته، لازم است عملکرد سیستم الگوتریدینگ شما با استفاده از این دادهها بررسی و سود و زیان آن تجمیع شود.
برای آزمودن الگوریتم روی دادههای گذشته، لازم است عملکرد سیستم الگوتریدینگ شما با استفاده از این دادهها بررسی و سود و زیان آن تجمیع شود. به نظر ساده میآید اما در عمل بهراحتی ممکن است نتایجی نادقیق از شبیهسازی بگیریم.
این امکان وجود دارد که نتایج بهدستآمده را با گرایشها و جانبداریهای ذهنیمان که به تصمیم کاملا غلط منتهی میشوند، آلوده کنیم. برای مقابله با این دو مشکل لازم است این دو موضوع را بررسی کنیم:
- دقت شبیهسازیها
- روششناسی تحقیقات و چهارچوبی که به نتایج منجر میشود
۱- دقت شبیهسازی
اگر شبیهسازی بازتاب دقیقی از واقعیت نباشد، چه ارزشی دارد؟ آزمونهای گذشته باید بازتاب درستی از معاملات واقعی باشند. بهصورت نظری، این شبیهسازیها باید همان معاملات با همان نتایج را بازتولید کنند.
برای فهم دقت شبیهسازی لازم است بدانیم سیستم شبیهسازی چگونه کار میکند و محدودیتهای شبیهسازی چیستاند.
هیچ مدلی نمیتواند پدیده شبیهسازیشده را بهدقت توضیح دهد؛ اما میتوان مدلی ساخت که برای هدف موردنظر مفید باشد. دقت شبیهسازی پارامتری است که روی مفید بودن شبیهسازی تاثیر میگذارد. دقت شبیهسازی، خود میتواند از این موارد، تاثیر پذیرد:
۱- پارامترهای موثر در معامله
برای مثال تفاوت قیمت خریدوفروش (Spread) با دریافت سفارشهای جدید خریدوفروش و تغییر سفارشهای قبلی تغییر میکند. تفاوت قیمت هدف و قیمت واقعی (slippage) از اتفاقات فراوانی همچون تغییرات بازار، نقدینگی بازار، نوع سفارشها و تاخیر در فرآیند معامله تاثیر میگیرد. روش حسابرسی در چنین شرایط پر جنبوجوشی میتواند تاثیر چشمگیری روی دقت شبیهسازی بگذارد.
اینکه ما روی کدامیک از این پارامترها تاکید کنیم، متناسب با استراتژی و هدف استفاده تعیین میشود. برای مثال، استراتژیهای معاملات سریع (High Frequency Trading or HFT) ممکن است با مدلسازی نقدینگی، سود تولید کنند.
۲- فرکانس نمونهگیری
فرکانس نمونهگیری (Granularity or Sampling Frequency) در دادههای مورداستفاده برای شبیهسازی و نحوه استفاده از آنها، در دقت شبیهسازی تاثیر دارد؛ مثلا شبیهسازی را در نظر بگیرید که در آن از دادههای ساعتی نمودار میلهای شامل قیمت آغازی، پایانی، حداقل و حداکثر روز (open-high-low-close or OHLC) استفاده کند.
اگر فرض کنیم در این شبیهسازی، فقط چهار بار در ساعت داده دریافت میشود، چه اتفاقی میافتد اگر در همان یک ساعت موقعیتهایی برای سود و زیان ایجاد شود؟ ما نمیتوانیم بدون داشتن دادههای بیشتری از این ساعت خاص، این نقاط را به دست آوریم. البته فرکانس نمونهبرداری به استراتژی مورداستفاده همبستگی دارد.
۳- دقت دادههای ورودی
دقت دادههای مورداستفاده در شبیهسازی نیز در دقت نهایی تاثیر میگذارند. اگر شبیهسازی بر پایه دادههای نادقیق انجام شود، واضح است که نتایج هم دقیق نخواهند بود. ممکن است ناهنجاریهایی چون وجود متغیرهای نامرتبط، نبود داده، ساعت و تاریخ اشتباه، منطقه زمانی غلط و تکرار در دادهها وجود داشته باشند.
دادههای مالی هم میتوانند مشکلات خاص خود را داشته باشند. برای مثال ممکن است دادههای سهام نیاز به تصحیح داشته باشند. برخی از دادههای ممکن است دارای تخمینهای جانبدارانه باشند. ازاینروی دادههایی که از یک منبع به دست میآیند ممکن است دقیقا نماینده تاریخچه معاملات نباشند و درنتیجه شبیهسازی ما نیز نتایج درستی به دست ندهد.
روششناسی توسعه الگوریتم
علاوه بر دقت شبیهسازی، روش انجام کار و جانبداریها (Bias) نیز میتواند در نتایج شبیهسازی تاثیر بگذارد. بسیاری از جانبداریها، ظریف و عمیق هستند. یک نگاه جانبدارانه میتواند پنهانی و ناخودآگاه در یک استراتژي و فرآیند توسعه اعمال شود و تاثیر فاجعهباری بگذارد. در نظر داشتن این جانبداریها ضروری است و باید در هر مرحله از توسعه مدنظر قرار گیرند.
جانبداری پیشرو
جانبداری پیشرو (Look-Ahead Bias or Peeking Bias) بهاینعلت ایجاد میشود که ما اجازه میدهیم دانشی در مورد آینده بازار روی تصمیمگیریهایمان تاثیر بگذارد. ازاینروی ما از دانشی استفاده میکنیم که نباید در دسترس میبود.
بهراحتی میتوان هنگام طراحی سیستم آزمون گذشته، جلو ورود این اطلاعات را گرفت. یک مثال معمول از این جانبداری انجام یک معامله در میانه روز بر پایه قیمت نهایی روز است. این در حالی است که قیمت نهایی تا اتمام روز مشخص نمیشود.
برای آزمودن الگوریتمها با استفاده از دادههای گذشته بازار، باید با فرض عدم آگاهی شبیهسازی را انجام دهیم.
هنگامیکه از ابزارهای شبیهسازی که خودمان ساختهایم استفاده میکنیم، متوجه خواهید شد که باید به این نوع از جانبداری توجه کنید.
یکی از راههای دیگری که ممکن است از آن طریق این نوع جانبداری در کل شبیهسازی وارد شود، این است که ما یک پارامتر را محاسبه کنیم و به صورتی پیشرو آن را در شروع شبیهسازی بعدی وارد کنیم. پارامترهای بهینهسازی پورتفولیو مستعد این جانبداری هستند.
جانبداری برازش منحنی
جانبداری برازش منحنی (Curve-fitting bias or Over-Optimization Bias) این امکان را فراهم میآورد که بتوانیم آزمونهای گذشته خوبی ایجاد کرده و چند برابر سود تولید کنیم. البته این نوع از آزمونهای گذشته در دنیای واقعی کاملا بهدردنخور هستند.
دادههایی که برای آزمون گذشته استفاده میشوند، همواره مقداری پارازیت دارند. این پارازیت کاملا تصادفی است. هنگامیکه استراتژی معاملاتی را با برازش دادههای پر از پارازیت میچینیم (معمولا دادههای مالی، مملو از پارازیت هستند)، ما میزان ریسک استراتژی خود را روی پارازیت دادهها برازش میکنیم و نه بر اساس سیگنال پایه.
سیگنال پایه تاثیر قیمت یا متغیرهای دیگری است که فکر میکنیم میتواند فرصتهای تجاری را بروز دهد.
سیگنال پایه تاثیر قیمت یا متغیرهای دیگری است که فکر میکنیم میتواند فرصتهای تجاری را بروز دهد. این همان سیگنالی است که تلاش میکنیم در مدل خود بیابیم. اگر ما مدل خود را بر پارازیت برازش کنیم، درنهایت با یک مدل معامله تصادفی خواهیم رسید که البته به درد نمیخورد.
جانبداری استخراج داده
جانبداری استخراج داده (Data-Mining Bias or Selection Bias) یکی از مهمترین ریشههای تخمینهای غلط برای عملکرد بالاست. این جانبداری اشکال مختلفی به خود میگیرد. بنابراین لازم است از آن آگاه باشیم و اقداماتی برای آن انجام دهیم. معمولا هنگامی با این جانبداری مواجه هستیم که میخواهیم بهترین الگوریتم را به لحاظ عملکرد از بین چند الگوریتم ، متغیرهای الگوریتم و بازار برای استفاده در فرآیند توسعه انتخاب کنیم.
اگر شما بهاندازه کافی استراتژیها و بازارها را آزموده باشید، درنهایت میتوانید آنچه را که عملکرد بهتری دارد، انتخاب کنید.
اگر شما بهاندازه کافی استراتژیها و بازارها را آزموده باشید، درنهایت میتوانید آنچه را که عملکرد بهتری دارد، انتخاب کنید.
برای مثال فرض کنید میخواهید یک الگوریتم برای استفاده در بازار ارز بسازید. این استراتژی بهخوبی در آزمونهای بازار تبادل یورو/دلار کار میکند اما در بازار دلار/ریال دچار مشکل است. وقتی بازار یورو/دلار را انتخاب میکنید، شما یک جانبداری انتخابی را وارد فرآیند کردهاید. ازاینروی کارایی استراتژی بازار یورو/دلار بالا تخمین زده میشود.
برای اینکه از این مشکل جلوگیری کنید، یا باید توقع خود را از استراتژی بکاهید یا آن را با دادههای جدیدی که قبلا امتحان نشده بیازمایید. پسازآن، از نتایج بهدستآمده، برای تخمین بهتر عملکرد استفاده کنید.
نتیجهگیری
یک استراتژی نیرومند چیزی است که از نابهنجاری، ناکارایی یا از دیگر مشخصات بازار حداکثر استفاده را بکند. راستش پیدا کردن استراتژیهایی که در آزمون و شبیهسازی، نیرومند به نظر بیایند آسان است اما این استراتژیها احتمالا مشکلاتی از قبیل مدلسازی نادقیق، تصادفی بودن و جانبداریهایی را که در بالا گفتیم، دارند.
مشخصا ما به یک رهیافت سیستماتیک برای رفع هرکدام از مشکلات نیاز داریم. رهیافتی که شامل ابزارهای درونی برای بررسی و متعادلسازی داشته باشد. با دانستن این نکات، حال شاید وقت آن است که شما هم سیستم الگوتریدینگ خود را بسازید.
نظرات