بهینهسازیِ استراتژی: کِی کمک میکند و کِی فریب میدهد
هر استراتژی چند عدد دارد — طولِ میانگین، آستانهٔ اندیکاتور، درصدِ حد ضرر. بهینهسازی یعنی جستوجوی ترکیبی از این اعداد که بهترین نتیجه را بدهد. مشکل این است که «بهترین روی گذشته» و «بهترین برای آینده» دو چیزند.
چرا جستوجوی دستی جواب نمیدهد
اگر استراتژیتان پنج پارامتر داشته باشد و هر کدام ده حالت، بیش از صد هزار ترکیب دارید. آزمودنِ همهشان هفتهها طول میکشد و انتخابِ چند تای تصادفی هم چیزی ثابت نمیکند.
الگوریتمهای بهینهسازی همین فضا را هوشمندانهتر میگردند: بهجای آزمودنِ همه، از نتیجهٔ آزمونهای قبلی یاد میگیرند کجا را بگردند.
الگوریتمِ ژنتیک در برابرِ بهینهسازیِ بیزی
ژنتیک جمعیتی از ترکیبها میسازد، بهترینها را نگه میدارد، آنها را با هم ترکیب میکند و کمی تغییرِ تصادفی میدهد. برای فضاهای بزرگ و ناهموار خوب است و بهراحتی موازی میشود.
بهینهسازیِ بیزی مدلی از «کدام ناحیه احتمالاً خوب است» میسازد و هر آزمونِ بعدی را جایی میزند که بیشترین اطلاعات را بدهد. وقتی هر آزمون گران است، معمولاً با آزمونهای بسیار کمتری به همان جواب میرسد.
در سنجشِ خودِ ما با بودجهٔ برابر، روشِ بیزی در چهار مورد از پنج مورد برنده شد و در یکی از آزمونها جوابی را که ژنتیک با ۲۲۰ ارزیابی پیدا کرده بود، با ۲۶ ارزیابی پیدا کرد. این یعنی گرفتنِ نتیجه در دقیقه بهجای ساعت — نه اینکه ژنتیک بد باشد.
بیشبرازش: مهمترین چیزِ این صفحه
اگر پارامترها را روی همان دادهای تنظیم کنید که بعد با آن قضاوتشان میکنید، عددی میگیرید که هیچ معنایی ندارد. با کافیبودنِ تعدادِ پارامتر، میشود هر تاریخچهای را کامل توضیح داد.
راهِ استاندارد، جداسازی است: داده به دو بخش تقسیم میشود. بهینهسازی فقط روی بخشِ اول (دروننمونه) انجام میشود و نتیجه روی بخشِ دوم (بروننمونه) که الگوریتم هرگز ندیده، سنجیده میشود. اگر نتیجهٔ بروننمونه بهشدت بدتر باشد، آنچه پیدا کردهاید یک قاعده نیست، یک تصادف است.
تحلیلیار همین جداسازی را انجام میدهد و وقتی فاصلهٔ دروننمونه و بروننمونه بزرگ باشد، صریح هشدار میدهد — بهجای اینکه فقط عددِ درخشانِ دروننمونه را نشان بدهد.
چند قاعدهٔ عملی
- پارامترِ کمتر بهتر است. هر پارامترِ اضافه یک درجهٔ آزادیِ تازه برای بیشبرازش است.
- به جوابی که روی لبهٔ بازه نشسته مشکوک باشید؛ معمولاً یعنی بازه را اشتباه انتخاب کردهاید.
- جوابی که با تغییرِ کوچکِ پارامتر فرو میریزد، پایدار نیست. ناحیهای را بردارید که اطرافش هم خوب است.
- نتیجهٔ بهینهسازی را روی نمادِ دیگری هم بیازمایید. قاعدهای که فقط روی یک نماد کار میکند، قاعده نیست.
واژهها: همین چیز را چطور دیگر مینویسند
- «بیشبرازش» ترجمهٔ overfitting است؛ «دروننمونه» و «بروننمونه» معادلِ in-sample و out-of-sample.
- «بهینهسازی» گاهی «اپتیمایز» هم گفته میشود؛ «الگوریتم ژنتیک» معادلِ genetic algorithm و «بیزی» معادلِ Bayesian optimization است.
پرسشهای پرتکرار
بهینهسازی استراتژی یعنی چه؟
جستوجوی خودکارِ ترکیبِ پارامترهایی (طولِ اندیکاتور، آستانهها، درصدِ حد ضرر) که بهترین نتیجه را روی دادهٔ آزمون میدهد، بهجای آزمودنِ دستیِ چند حالت.
چرا نتیجهٔ بهینهسازی در بازارِ واقعی تکرار نمیشود؟
معمولاً بهخاطرِ بیشبرازش: پارامترها روی همان داده تنظیم شدهاند که با آن سنجیده میشوند. راهِ تشخیص، سنجشِ نتیجه روی بخشی از داده است که در بهینهسازی استفاده نشده.
کدام روش بهتر است، ژنتیک یا بیزی؟
بستگی به فضا دارد. با بودجهٔ ارزیابیِ برابر، روشِ بیزی معمولاً با آزمونهای کمتر به جوابِ همارز میرسد؛ ژنتیک در فضاهای بسیار بزرگ و ناهموار همچنان قوی است. هر دو در تحلیلیار در دسترساند.