اپیزود ۵ — رگرسیون ساده و رگرسیون لجستیک اولین مدل یادگیری ماشین در فارکس
مقدمه
تا اینجای فصل اول، ما یک مسیر محکم ساختیم:
- فهمیدیم چرا به یادگیری ماشین(ML) در فارکس نیاز داریم (اپیزود ۱).
- دادههای خام را تمیز کردیم (اپیزود ۲).
- چند ویژگی اولیه ساختیم Return، SMA، RSI، ATR در اپیزود ۳
- معیارهای موفقیت را شناختیم Accuracy، Profit Factor، MDD، Sharpe در اپیزود ۴
حالا وقتش رسیده یک قدم جسورانه برداریم: ساخت اولین مدل یادگیری ماشین در فارکس. نترس! قرار نیست وارد فرمولهای پیچیده شویم. فقط میخواهیم یک مدل خیلی ساده، مثل یک خطکش، روی دادههای EURUSD بگذاریم و ببینیم آیا میتواند بگوید فردا قیمت بالا میرود یا پایین.
رگرسیون ساده(خطی) به عنوان اولین مدل یادگیری ماشین در فارکس یعنی چه؟
رگرسیون یکی از سادهترین و در عین حال بنیادیترین روشهای آماری و یادگیری ماشین است. واژهی «Regression» شاید در نگاه اول کمی ترسناک به نظر برسد، اما در واقع کاری شبیه کشیدن یک خط صاف روی نقاط پراکنده است.
یک مثال روزمره
فرض کن میخواهی رابطهی سن و قد بچهها را بررسی کنی. دادهها را جمعآوری میکنی:
- بچه ۵ ساله → قد ۱۱۰ سانتیمتر
- بچه ۶ ساله → قد ۱۲۰ سانتیمتر
- بچه ۷ ساله → قد ۱۲۵ سانتیمتر
اگر این نقاط را روی نمودار بکشی، میبینی تقریباً در یک خط قرار میگیرند. حالا یک خط صاف میکشی که از وسط این نقاط عبور کند. این خط همان چیزی است که «رگرسیون خطی» تولید میکند: بهترین خط ممکن که رابطهی بین سن و قد را توضیح میدهد.
چرا به آن «بهترین خط» میگوییم؟
چون این خط طوری کشیده میشود که کمترین فاصله (خطا) را از همهی نقاط داده داشته باشد. به زبان ساده، اگر خط کمی بالا یا پایین کشیده شود، مجموع خطاها بیشتر خواهد شد. پس خط رگرسیون همان تعادل طلایی است.
پیوند با فارکس
حالا این ایده را به دنیای فارکس بیاوریم. ما دادههایی داریم مثل:
- بازده روزانه (Return)
- SMA20 (میانگین متحرک)
- RSI14 (قدرت بازار)
- ATR14 (میزان نوسان)
میخواهیم بدانیم این عوامل چطور روی حرکت فردای EURUSD تأثیر میگذارند. رگرسیون خطی به ما میگوید: «اگر این عوامل را در نظر بگیری، بهترین ترکیب خطی برای پیشبینی تغییر قیمت فردا این است.»
وقتی مسئله دودویی است
در بازار فارکس اغلب سؤال اصلی این است: «آیا فردا بالا میرویم یا پایین؟» این دیگر یک مقدار پیوسته (مثل قد) نیست، بلکه یک مقدار دودویی است (۰ یا ۱). در این حالت از نسخهای به نام رگرسیون لجستیک (Logistic Regression) استفاده میکنیم.
لجستیک به جای یک خط صاف، یک منحنی S شکل رسم میکند که خروجی آن همیشه بین ۰ و ۱ است. بنابراین مدل میتواند احتمال صعود یا نزول را بدهد. مثلاً بگوید:
- احتمال صعود = ۷۰٪
- احتمال نزول = ۳۰٪
خلاصه ساده
- رگرسیون خطی: پیدا کردن بهترین خط برای دادههای عددی.
- رگرسیون لجستیک: پیدا کردن بهترین رابطه برای دادههای دودویی (بالا/پایین).
در هر دو حالت، ایده خیلی ساده است: ما دادههای گذشته را به مدل میدهیم، مدل یک رابطهی تقریبی پیدا میکند، و بعد از آن میتواند برای دادههای جدید پیشبینی کند.
رگرسیون لجستیک یعنی چه؟
رگرسیون لجستیک هم مثل رگرسیون خطی یک ابزار آماری و یادگیری ماشین است، اما با یک تفاوت مهم: خروجی آن احتمال است، نه یک عدد پیوسته.
تفاوت با رگرسیون خطی
در رگرسیون خطی، اگر دادهها را به مدل بدهی، ممکن است خروجی هر عددی باشد: +۲.۳ یا -۰.۸ یا ۱۵۰. اما در مسائل مالی مثل فارکس، ما بیشتر به سؤالات «بله/خیر» یا «بالا/پایین» علاقهمندیم. برای مثال:
- آیا فردا EURUSD بالا میرود؟ (۱ = بله، ۰ = خیر)
- آیا استراتژی SMA20 باید امروز سیگنال خرید بدهد؟
در اینجاست که رگرسیون لجستیک وارد عمل میشود.
یک مثال روزمره
تصور کن میخواهی احتمال قبولی یک دانشآموز در امتحان را بر اساس تعداد ساعتهای مطالعه پیشبینی کنی.
- کسی که ۰ ساعت درس خوانده، احتمالاً نزدیک ۰٪ شانس قبولی دارد.
- کسی که ۱۰ ساعت خوانده، احتمالاً ۹۰٪ شانس دارد.
اگر بخواهیم یک خط ساده بکشیم (مثل رگرسیون خطی)، ممکن است برای ۱۵ ساعت مطالعه، خروجی ۱۵۰٪ شود! که غیرممکن است. به همین دلیل به یک منحنی S شکل (Sigmoid) نیاز داریم تا مقدار خروجی همیشه بین ۰ و ۱ باقی بماند. این همان کاری است که رگرسیون لجستیک انجام میدهد.
کاربرد در فارکس
در فارکس ما Target را به صورت دودویی تعریف میکنیم:
- اگر Close فردا > Close امروز ⇒ Target = ۱ (صعود)
- اگر Close فردا < Close امروز ⇒ Target = ۰ (نزول)
مدل لجستیک بعد از دیدن دادههای گذشته (ویژگیهایی مثل Return، SMA20، RSI14، ATR14)، یک احتمال برای فردا میدهد:
- «۷۰٪ احتمال صعود»
- «۳۰٪ احتمال نزول»
این خیلی بهتر از یک پیشبینی مطلق است، چون میتوانیم تصمیمات ریسکی را هم مدیریت کنیم. مثلاً اگر احتمال صعود ۵۲٪ باشد، شاید ارزش معامله نداشته باشد. اما اگر ۸۵٪ باشد، اعتماد به معامله بیشتر است.
مثال واقعی با EURUSD
فرض کنیم دادههای سال ۲۰۲۳ EURUSD را وارد مدل کنیم. مدل لجستیک پس از آموزش یاد میگیرد:
- اگر RSI زیر ۳۰ باشد (اشباع فروش)، احتمال صعود فردا بالا میرود.
- اگر SMA20 نزولی باشد و بازده امروز منفی باشد، احتمال نزول فردا بیشتر میشود.
در تست مدل، روی ۱۰۰ روز آخر دیتاست:
- مدل ۶۲ روز را درست پیشبینی کرد (صعود/نزول).
- Accuracy = ۶۲٪
- اما مهمتر اینکه مدل توانست احتمالهای نزدیک به ۵۰٪ را کنار بگذارد و روی مواردی با احتمال بالاتر تمرکز کند.
چرا رگرسیون لجستیک نقطه شروع خوبی است؟
- سادگی: فرمولها پیچیده نیستند و درکشان آسان است.
- تفسیرپذیری: میتوانیم بفهمیم هر ویژگی چه اثری دارد (مثلاً وزن SMA20 مثبت یا منفی است).
- کاربردی بودن: بسیاری از مدلهای پیشرفتهتر (مثل شبکههای عصبی) در اصل نسخههای پیچیدهتر همین ایده هستند.
محدودیتها
- رگرسیون لجستیک نمیتواند روابط غیرخطی پیچیده را به خوبی یاد بگیرد.
- اگر ویژگیها خیلی ساده باشند، خروجی مدل هم خیلی ساده خواهد بود.
- در بازار پرنوسان، Accuracy ممکن است فقط کمی بالاتر از ۵۰٪ باشد.
اما همهی اینها اشکالی ندارد؛ چون هدف اپیزود ۵ فقط این است که اولین مدل واقعی ML را بسازیم و فرآیند را تجربه کنیم.

مسئله ما (یادگیری ماشین در فارکس)
ما میخواهیم بدانیم فردا EURUSD بالا میرود یا پایین. این یک مسئلهی دودویی (صعود/نزول) است. بنابراین معمولاً از رگرسیون لجستیک (Logistic Regression) استفاده میشود، چون خروجیاش احتمال است (مثلاً ۷۰٪ احتمال صعود، ۳۰٪ احتمال نزول).
اما برای شروع، هر دو مدل (خطی و لجستیک) سادهاند و به درد یادگیری میخورند. مهم این است که بفهمیم:
- ورودیها = ویژگیهایی که ساختیم Return، SMA20، RSI14، ATR14.
- خروجی = حرکت روز بعد (بالا = ۱، پایین = ۰)
انتخاب ویژگیها
از اپیزود ۳ یادت هست:
- Return = تغییر درصدی قیمت نسبت به دیروز.
- SMA20 = روند کوتاهمدت.
- RSI14 = قدرت بازار.
- ATR14 = میزان نوسان.
اینها ورودیهای مدل ما هستند. در اکسل یا پایتون میتوانیم یک جدول بسازیم:
Date |
Return |
SMA20 |
RSI14 |
ATR14 |
Target فردا |
۲۰۲۵-۰۴-۰۲ |
۰.۱۲% |
۱.۱۰۳۰ |
۶۲ |
۰.۰۰۸۵ |
۱ |
۲۰۲۵-۰۴-۰۳ |
-۰.۰۸% |
۱.۱۰۲۲ |
۵۵ |
۰.۰۰۷۲ |
۰ |
تعریف هدف (Target)
Target ما خیلی ساده است:
- اگر Close فردا > Close امروز → Target = 1 صعود
- اگر Close فردا < Close امروز → Target = 0 نزول
این ستون را در دادهها اضافه میکنیم تا مدل بداند چه چیزی باید پیشبینی کند.
آموزش مدل رگرسیون ساده و لجستیک
حالا مدل را روی دادههای تاریخی EURUSD «آموزش» میدهیم. آموزش یعنی پیدا کردن بهترین وزنها برای هر ویژگی.
مثلاً مدل ممکن است یاد بگیرد:
- اگر RSI بالا باشد، احتمال صعود بیشتر است.
- اگر ATR خیلی بالا باشد، نوسان زیاد است و پیشبینی سختتر.
- اگر Return امروز مثبت بوده و SMA20 هم صعودی است، احتمالاً فردا هم صعود میکنیم.
تست مدل رگرسیون ساده و لجستیک
بعد از آموزش، باید مدل را روی دادهای تست کنیم که تا به حال ندیده است (مثلاً ۲۰٪ آخر دیتاست). حالا Accuracy را حساب میکنیم:
- اگر Accuracy حدود ۵۰٪ باشد ⇒ مثل شیر یا خط است، ارزش خاصی ندارد.
- اگر Accuracy به ۶۰٪ یا بیشتر برسد ⇒ یعنی مدل توانسته الگوهایی کوچک اما واقعی پیدا کند.
مثلاً در تست EURUSD:
- ۳۰ پیشبینی → ۱۸ درست، ۱۲ غلط
- Accuracy = ۶۰٪
این عدد شاید کوچک به نظر برسد، اما در فارکس اگر با مدیریت ریسک ترکیب شود میتواند سودده باشد.
اشتباه رایج در استفاده از مدل یادگیری ماشین در فارکس
خیلیها انتظار دارند همین اولین مدل ساده همهچیز را درست بگوید. واقعیت این است که رگرسیون لجستیک فقط نقطهی شروع است.
- ممکن است Accuracy آن فقط کمی بالاتر از ۵۰٪ باشد.
- این اشکالی ندارد؛ ما تازه شروع کردهایم.
- مهم این است که کل فرآیند ML را تجربه کنیم: از داده تمیز → ساخت ویژگی → تعریف هدف → آموزش مدل → ارزیابی.
نتیجه ملموس امروز
برای اولین بار یک مدل واقعی ML ساختیم که میتواند حرکت فردای EURUSD را حدس بزند. شاید هنوز ابتدایی باشد، اما این یک نقطهی عطف است: حالا از این به بعد میتوانیم مدلهای پیچیدهتر (مثل درخت تصمیم یا شبکه عصبی) را امتحان کنیم.
تمرین کوچک
- دادهی EURUSD تمیز (۲۰۱۹ تا ۲۰۲۳) را بردار.
- ستون Target را اضافه کن (فردا بالا/پایین).
- در اکسل یک رگرسیون ساده اجرا کن یا از Add-ins مثل Analysis ToolPak استفاده کن Accuracy را حساب کن.
- فکر کن چه ویژگی دیگری میتواند مدل را بهتر کند.
چکلیست اپیزود ۵
- داده تمیز EURUSD آماده است.
- ویژگیها (Return, SMA20, RSI14, ATR14) محاسبه شدهاند.
- ستون Target (بالا/پایین) ساخته شده است.
- مدل رگرسیون ساده آموزش داده شده است.
- Accuracy روی داده تست محاسبه شده است.
- نتیجه ثبت و تحلیل شده است.
منابع
- Investopedia — Logistic Regression in Finance
- Babypips — Machine Learning Basics for Traders
- Towards Data Science — Linear vs Logistic Regression Explained