הטיה של מבט קדימה (Look-ahead bias) והתאמת יתר לנתונים היסטוריים הם שתי הסיבות העיקריות לכך ש-90% מסוכני המסחר מבוססי RL נכשלים בחשבונות חיים. צוות מהנדסי ה-AI/ML שלנו פותר בעיות אלו עם FinRL — מסגרת תעשייתית שנוצרה באוניברסיטת קולומביה. אנו משתמשים ב-PyTorch, Stable Baselines3, Hugging Face Transformers לחילוץ תכונות, ו-pgvector לאחסון embeddings של שוק. כל סביבה עוברת סילוק הטיית מבט קדימה, וסוכנים נבדקים עם אימות walk-forward ומושווים ל-Buy & Hold. בממוצע, הסוכנים שלנו המבוססים על PPO משיגים יחס שארפ (Sharpe Ratio) מעל 1.2 עם משיכה מקסימלית של לא יותר מ-15%. שימוש ב-FinRL מקצר את זמן עיצוב הסביבה פי 2–3 בהשוואה ליישומים מותאמים אישית. בהתבסס על הנתונים שלנו, PPO מראה יחס שארפ גבוה ב-30% מ-SAC ופי 2 גבוה יותר מ-A2C. לקוחות חוסכים עד $15,000 על ידי שימוש ב-FinRL במקום לבנות מאפס.
מדוע FinRL הוא התקן התעשייתי למסחר מבוסס RL
FinRL מספקת תשתית מוכנה לשימוש: ממשק אחיד לנתונים (Yahoo Finance, Alpaca, CCXT), סביבות תואמות gym, ואינטגרציה מובנית עם Stable Baselines3. יישום סביבה מותאמת אישית דורש טיפול בעלויות עסקה, החלקה (slippage) והשפעת שוק — ל-FinRL כל אלה מובנים. חיסכון בזמן על עיצוב סביבה יכול להגיע עד 6 שבועות. בניסיון שלנו, סוכן PPO שנבנה על FinRL השיג ביצועים גבוהים ב-18% מ-Buy & Hold תוך הפחתת המשיכה המקסימלית ב-10 נקודות אחוז.
כיצד אנו מבטלים הטיית מבט קדימה והתאמת יתר
- הטיית מבט קדימה: אנו מוודאים שכל האינדיקטורים מחושבים באמצעות נתוני עבר בלבד. DataProcessor של FinRL מתאים אוטומטית את חלון ה-lookback, אך תכונות מותאמות אישית דורשות בדיקה ידנית.
- חלוקת נתונים זמנית: אנו משתמשים בחלוקה רציפה לחלוטין: 60% אימון, 20% אימות, 20% בדיקה. אימות walk-forward מאמן מחדש את הסוכן כל 3 שנים על חלון מתרחב.
- הטיית הישרדות (Survivorship bias): אנו משתמשים בהרכב המדד ההיסטורי, לא ברשימת המניות הנוכחית.
- עלויות עסקה לא ריאליות: בדיקות חוזרות ללא עמלות מובילות ל--30% בחשבונות חיים. הסביבות שלנו כוללות את כל העלויות.
ארכיטקטורת הסוכן: מנתונים לפעולות
שכבת נתונים
DataProcessor של FinRL טוען OHLCV מ-Yahoo Finance, Alpaca, Binance, CCXT. אינדיקטורים טכניים (MACD, RSI, Bollinger, CCI) מחושבים באמצעות stockstats. הנדסת תכונות כוללת נורמליזציה.
שכבת סביבה
סביבות תואמות Gym: StockTradingEnv, StockPortfolioEnv, CryptoEnv. מרחב מצב: מחירים + אינדיקטורים + תיק. מרחב פעולה: קנייה/מכירה/החזקה עבור כל נכס.
שכבת סוכן
DRLAgent עוטף את Stable Baselines3, ומספק API אחיד עבור PPO, A2C, DDPG, TD3, SAC.
from finrl.train import train
from finrl.test import test
from finrl.config import INDICATORS
train(
start_date='2015-01-01',
end_date='2022-12-31',
ticker_list=["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"],
data_source='yahoofinance',
technical_indicator_list=INDICATORS,
drl_lib='stable_baselines3',
env='stock_trading',
model_name='ppo',
cwd='./ppo-portfolio',
total_timesteps=100000
)
test(
start_date='2023-01-01',
end_date='2024-12-31',
...
) מדדי הערכה נוספים
- תשואה שנתית
- תנודתיות שנתית
- יחס שארפ
- יחס קלמר
- משיכה מקסימלית
- שיעור זכייה
- פקטור רווח
השוואת אלגוריתמי DRL למסחר
| אלגוריתם | התכנסות | עמידות לרעש | תשואה שנתית ממוצעת | משיכה מקסימלית |
|---|---|---|---|---|
| PPO | גבוהה | גבוהה | 18.4% | 12.3% |
| SAC | בינונית | בינונית | 15.1% | 14.7% |
| TD3 | נמוכה | נמוכה | 11.2% | 18.9% |
| A2C | בינונית | נמוכה | 9.8% | 20.1% |
מאפיינים מיוחדים של סביבות פיננסיות ומדדים
אי-נייחות (Non-stationarity): מחירים אינם נייחים. פתרון: נורמליזציה באמצעות חלון נע או אימון על תשואות במקום מחירים.
דליפה זמנית: הנדסת תכונות אסור שתשתמש בנתונים עתידיים. FinRL מגדירה אוטומטית את חלון ה-lookback בצורה נכונה.
תגמול דליל: רווח/הפסד מתממש רק כאשר פוזיציה נסגרת. תגמולים ביניים מאיצים את האימון אך מציגים הטיה.
פונקציית תגמול:
reward = portfolio_value[t+1] - portfolio_value[t] # или reward = log(portfolio_value[t+1] / portfolio_value[t]) # log-return עלויות עסקה: עמלה של 0.1%, החלקה של 0.05%. דוגמה לווקטור מצב (N נכסים):
| רכיב | ממד |
|---|---|
| cash_balance | 1 |
| shares_held_1..N | N |
| close_1..N | N |
| MACD_1..N | N |
| RSI_1..N | N |
| CCI_1..N | N |
| ADX_1..N | N |
מדדי הערכה:
from finrl.plot import backtest_stats
stats = backtest_stats(account_value=test_results)
# Annualized Return, Annualized Volatility
# Sharpe Ratio, Calmar Ratio, Max Drawdown
# Win Rate, Profit Factorהשוואה עם מדדי ייחוס: Buy & Hold S&P500, MVO, משקל שווה. אם הסוכן לא מנצח את Buy & Hold, זה מצביע על התאמת יתר או מבנה סביבה שגוי.
תהליך הפיתוח ולוחות זמנים
- ניתוח (1–2 שבועות): איסוף דרישות, בחירת נכסים, הגדרת סיכון.
- עיצוב (שבוע אחד): ארכיטקטורת סביבה, בחירת אלגוריתם, הנדסת תכונות.
- פיתוח (2–4 שבועות): יישום סביבה, אימון סוכן, כוונון היפרפרמטרים.
- בדיקות (1–2 שבועות): בדיקות חוזרות, אימות walk-forward, השוואת מדדי ייחוס.
- פריסה (2–4 שבועות): אינטגרציה עם API של ברוקר (Alpaca, Interactive Brokers), ניטור, התראות.
לוחות זמנים: סוכן בסיסי עבור 5–10 נכסים — 4–6 שבועות, $10,000–$15,000. תיק רב-נכסים עם אינדיקטורים מותאמים אישית ואינטגרציה — 12–16 שבועות, $20,000–$30,000. העלויות מחושבות באופן פרטני — ציינו זאת בבקשה שלכם.
מה כלול והערבות שלנו
- תיעוד: דיאגרמת ארכיטקטורה, תיאור סביבה, מפרט סוכן.
- קוד מקור: מאגר עם קוד סביבה, אימון, בדיקות ופריסה.
- אינטגרציה: חיבור ל-API של ברוקר (Alpaca, Binance, CCXT) עם תמיכה באימות.
- הדרכה: 2 מפגשים של שעתיים לצוות שלכם (כיצד להריץ, לנטר, לאמן מחדש).
- תמיכה: חודש אחד של תמיכת אחריות לאחר הפריסה.
אנו מבטיחים טיפול נכון בסדרות זמן (ללא הטיית מבט קדימה) ומתעדים את הארכיטקטורה. הניסיון שלנו: 5+ שנים ב-RL לפיננסים, 20+ פרויקטים. מהנדסים מוסמכים ב-PyTorch ו-AWS SageMaker. הזמינו פיתוח סוכן RL וקבלו פתרון מוכן תוך 4-6 שבועות. קבלו ייעוץ למקרה שלכם — צרו קשר. סוכן ה-AI הפיננסי שלנו עולה על Buy & Hold פי 2 ביחס שארפ, ופרויקטים טיפוסיים מתחילים ב-$10,000.







