ساخت سیستم تشخیص رژیم بازار با Hidden Markov Model و Bayesian Filtering
مقاله حسین نریمانی ۱۴۰۵/۰۴/۰۱ Quant System Design

ساخت سیستم تشخیص رژیم بازار با Hidden Markov Model و Bayesian Filtering

اکثر استراتژی‌های معاملاتی با یک فرض ضمنی طراحی می‌شوند: رفتار بازار ثابت است. یک مدل روی داده‌های تاریخی بهینه می‌شود، پارامترها تنظیم می‌شوند، و سیستم به production می‌رود. تا زمانی که رژیم بازار عوض نشده، همه چیز...

اکثر استراتژی‌های معاملاتی با یک فرض ضمنی طراحی می‌شوند: رفتار بازار ثابت است. یک مدل روی داده‌های تاریخی بهینه می‌شود، پارامترها تنظیم می‌شوند، و سیستم به production می‌رود. تا زمانی که رژیم بازار عوض نشده، همه چیز خوب به نظر می‌رسد.

مشکل اینجاست: بازار رژیم عوض می‌کند. و اغلب بدون اطلاع قبلی.

رژیم بازار چیست و چرا تشخیص آن سخت است

رژیم بازار (Market Regime) به وضعیت پایدار آماری بازار گفته می‌شود — مثل دوره‌های روند صعودی با نوسان پایین، نوسان بالا بدون جهت مشخص، یا فروپاشی سریع. هر رژیم توزیع بازده متفاوتی دارد، همبستگی‌های متفاوتی میان دارایی‌ها ایجاد می‌کند، و استراتژی‌های متفاوتی را طلب می‌کند.

مشکل اصلی این است که رژیم مستقیماً قابل مشاهده نیست. شما قیمت می‌بینید، حجم می‌بینید، شاید implied volatility. اما رژیم یک متغیر پنهان (Latent Variable) است که از داده‌های مشاهده‌پذیر باید استنتاج شود.

رویکرد ساده — مثل تعریف رژیم با threshold روی VIX یا میانگین متحرک — دو نقص اساسی دارد: تأخیر زیاد و شکنندگی در برابر نویز. وقتی سیستم رژیم را تشخیص می‌دهد، اغلب نیمی از آن گذشته است.

چرا Hidden Markov Model برای این مسئله مناسب است

مدل مارکوف پنهان (Hidden Markov Model یا HMM) دقیقاً برای مدل‌سازی سیستم‌هایی طراحی شده که یک زنجیره‌ی حالت پنهان دارند و فقط خروجی آن حالت‌ها مشاهده می‌شود. در زمینه‌ی بازار: حالت‌های پنهان همان رژیم‌ها هستند، و مشاهدات همان بازده‌های روزانه یا ویژگی‌های اشتقاق‌شده از قیمت.

یک HMM با N حالت، سه ماتریس اصلی را یاد می‌گیرد. اول، ماتریس انتقال (Transition Matrix) که احتمال رفتن از رژیم i به رژیم j را نگه می‌دارد. دوم، پارامترهای توزیع انتشار (Emission Distribution) که در هر رژیم، توزیع بازده را مشخص می‌کند. سوم، توزیع اولیه روی حالت‌های احتمالی در شروع.

الگوریتم Baum-Welch این پارامترها را از داده‌های تاریخی یاد می‌گیرد — بدون اینکه نیاز باشد رژیم‌ها را دستی برچسب بزنید. این مزیت بزرگی است. اما یک مشکل جدی وجود دارد: HMM استاندارد برای تشخیص real-time رژیم طراحی نشده است.

جایی که Bayesian Filtering وارد می‌شود

فیلتر بیزی (Bayesian Filter) مکانیزمی است برای به‌روزرسانی باورمان درباره‌ی وضعیت پنهان سیستم، با هر مشاهده‌ی جدید. در زمینه‌ی رژیم بازار: در هر لحظه یک توزیع احتمال روی رژیم‌های ممکن داریم — نه یک برچسب قطعی.

فرآیند کار به این شکل است. در مرحله‌ی Predict، با استفاده از ماتریس انتقال HMM، پیش‌بینی می‌کنیم که احتمال هر رژیم در گام بعدی چقدر است. در مرحله‌ی Update، وقتی مشاهده‌ی جدید (بازده امروز) می‌آید، این احتمالات را با Bayes' Rule به‌روز می‌کنیم. خروجی نهایی یک vector از احتمالات است: مثلاً ۷۰٪ احتمال رژیم trending، ۲۰٪ احتمال رژیم volatile، ۱۰٪ احتمال رژیم bear.

این رویکرد چند مزیت عملیاتی دارد. اول، تأخیر کمتر نسبت به smoothed HMM inference دارد. دوم، عدم‌قطعیت را صریح نگه می‌دارد — به جای اینکه یک رژیم قطعی اعلام کند. سوم، به راحتی می‌توان آن را با سیگنال‌های دیگر ترکیب کرد.

پیاده‌سازی عملی: از نظریه تا سیستم

در یک پیاده‌سازی واقعی با Python، کتابخانه‌ی hmmlearn برای fitting مدل HMM روی داده‌های تاریخی استفاده می‌شود. ویژگی‌های ورودی معمولاً شامل بازده روزانه، rolling volatility (مثلاً ۵ و ۲۰ روزه)، و volume z-score هستند — نه قیمت خام.

یک نکته‌ی عملی مهم: تعداد حالت‌ها را با BIC (Bayesian Information Criterion) انتخاب کنید، نه با حدس. در اکثر بازارهای سهام، ۳ تا ۴ حالت بهترین توازن را بین expressiveness و overfitting دارند.

برای filtering real-time، به جای اجرای مجدد Viterbi در هر گام، از forward algorithm استفاده می‌شود که دقیقاً همان Bayesian update را پیاده می‌کند. این کار complexity را از O(T²) به O(T) کاهش می‌دهد — تفاوت مهمی در production.

یک نمونه‌ی عملی: در یک سیستم equity long/short، وقتی احتمال رژیم high-volatility از ۶۰٪ رد می‌شود، leverage به‌طور خودکار کاهش می‌یابد و استراتژی از trend-following به mean-reversion شیفت می‌کند. این منطق ساده، اما قابلیت پیاده‌سازی آن به یک زیرساخت inference قابل‌اطمینان وابسته است.

مهم‌ترین چیزی که اکثر پیاده‌سازی‌ها نادیده می‌گیرند: مدل باید به‌صورت دوره‌ای re-train شود. پارامترهای HMM که روی داده‌های ۲۰۱۰-۲۰۲۰ آموزش دیده، در رژیم‌های پس از ۲۰۲۲ الزاماً valid نیستند. Concept drift در اینجا واقعی است.

محدودیت‌ها و چیزهایی که باید بدانید

HMM فرض می‌کند رژیم‌ها Markovian هستند — یعنی وضعیت فعلی فقط به وضعیت قبلی بستگی دارد، نه به تاریخچه‌ی بلندمدت. این فرض در بازارهای واقعی همیشه برقرار نیست. رژیم‌های ناشی از سیکل‌های کلان اقتصادی memory بیشتری دارند.

همچنین، HMM با توزیع‌های Gaussian برای بازارهایی با fat tail ضعیف است. استفاده از Student-t emission یا Gaussian mixture به‌عنوان emission distribution این مشکل را تا حدی حل می‌کند.

در نهایت، label switching یک مشکل پنهان در re-training است: مدل جدید ممکن است رژیم ۱ و ۲ را جابجا کند. بدون منطق alignment، سیستم downstream ممکن است سیگنال معکوس دریافت کند. این باگ در production بسیار گران تمام می‌شود.

یک سیستم تشخیص رژیم خوب، سیستمی نیست که همیشه رژیم «درست» را تشخیص دهد. سیستم خوب آن است که عدم‌قطعیت‌اش را صادقانه بیان کند — و استراتژی بر اساس همان عدم‌قطعیت تنظیم شود.

آماده‌ای این ایده را روی محصول خودت اجرا کنی؟ جلسه راهبردی رزرو کن و نقشه مسیر اسپرینت بعدی را دقیق کن.

نظرات (0)

اولین نفری باشید که نظر می‌دهد.

برای ثبت نظر باید وارد حساب کاربری خود شوید.

ورود / ثبت‌نام