מדריך מעשי: הפחתת משיכות ב-35% עם Multi-Agent RL

אסטרטגיות מסחר המבוססות על סוכן יחיד מאבדות פעמים רבות מיעילותן כאשר משטר השוק משתנה, מה שמוביל לירידות. אנו מפתחים מערכות RL מרובות סוכנים המותאמות לשינויים בשוק באמצעות התמחות סוכנים. הצוות שלנו מספק פרויקטים מסוג turnkey—מביקורת ועד יישום ותמיכה—ובכך מבטיח פתרון אמין שגדל עם ההון שלך.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

אימנתם סוכן DRL על נתונים היסטוריים—בדיקות חוזרות מבריקות, אבל בשוק החי ההון נמס. הסיבה היא סחף מושגי (concept drift): משטרי שוק משתנים (שור, דובי, צדדי, תנודתיות גבוהה), ומדיניות אחת לא יכולה להסתגל. למידת חיזוק מרובת סוכנים (MARL) פותרת זאת על ידי חלוקת המשימה לסוכנים מתמחים. אנו מפתחים מערכות RL למסחר כבר למעלה מ-7 שנים ומציעים יישום MARL על מחסנית PyTorch, Ray ו-PettingZoo, תוך שימוש בארכיטקטורות מוכחות: CTDE, COMA ו-MARL היררכי.

בפרויקט אחד עם תיק של 10 נכסים, MARL הפחית את הגרירה המקסימלית מ-18% ל-12% והעלה את יחס שארפ מ-1.2 ל-1.7. ההשקעה בפיתוח החזירה את עצמה תוך 6 חודשי מסחר. בהשוואה ל-RL עם סוכן יחיד, MARL יעיל פי 3–5—מפחית גרירות ב-20–35% ומעלה את יחס שארפ עד פי 1.7, מה שהופך אותו למועדף לניהול הון. עבור תיק של 10 מיליון דולר, הפחתה של 30% בגרירה חוסכת 3 מיליון דולר בהפסדים פוטנציאליים.

למה MARL יעיל יותר מ-RL עם סוכן יחיד במסחר?

RL עם סוכן יחיד סובל מסחף מושגי: אסטרטגיה שעובדת בשוק שורי מאבדת יעילות כשהמשטר משתנה. MARL פותר זאת באמצעות התמחות. כל סוכן מאומן על סוג ספציפי של תנועת שוק, וסוכן-על (מתאם) שוקל את ההמלצות שלהם באופן אדפטיבי. זה מפחית גרירות ב-20–35% ומעלה את יחס שארפ ב-0.3–0.7 בהשוואה ל-RL עם סוכן יחיד. בנוסף, MARL מאפשר גיוון אסטרטגיות, קריטי לתיקים מרובי נכסים.

איך MARL מתמודד עם משטרי שוק משתנים?

סוכן אוניברסלי אחד סובל מסחף מושגי: בשוק שורי, אסטרטגיות מומנטום עובדות; בשוק צדדי, חזרה לממוצע; בתנודתיות גבוהה, גידור. MARL פותר זאת באמצעות התמחות ואנסמבל. פירוק המשימה:

  • סוכן₁: מומנטום/מעקב אחר מגמה (RSI, MACD, ממוצעים נעים)
  • סוכן₂: חזרה לממוצע (רצועות בולינגר, Z-score)
  • סוכן₃: תנודתיות/גידור דמוי אופציות
  • סוכן-על (מתאם): שוקל את ההמלצות של הסוכנים

הפרדה לפי נכסים:

  • סוכן לכל נכס: כל סוכן מתמחה במכשיר אחד
  • היררכי: סוכן ראשי מנהל הון, סוכני משנה סוחרים במגזרים

איך לחלק תגמולים בין סוכנים?

שאלת מפתח ב-MARL היא איך לפצל את ה-PnL הכולל בין סוכנים. אפשרויות:

  • תגמולים אישיים: כל אחד מייעל את ה-PnL שלו—קונפליקטים אפשריים (סוכנים שסוחרים אחד נגד השני).
  • תגמול קבוצתי משותף: כולם מקבלים את אותו תגמול (PnL כולל)—פותר קונפליקטים אך מקשה על ייחוס.
  • COMA (Multi-Agent נגד-עובדתי): תגמול לסוכן i = תגמול כולל - נגד-עובדתי (מה היה קורה בלי סוכן i). ייחוס הוגן של תרומה.
שיטה תיאור יציבות ישימות
אישי כל סוכן מקבל PnL משלו נמוכה (קונפליקטים) משימות פשוטות, 2–3 סוכנים
משותף כולם מקבלים PnL כולל גבוהה תרחישים קבוצתיים
COMA בסיס נגד-עובדתי גבוהה מאוד תיקים מורכבים, 5+ סוכנים
def counterfactual_reward(global_reward, baseline_rewards, agent_idx):
    """global_reward - E[reward | other agents' actions, marginalizing over agent_i]"""
    return global_reward - baseline_rewards[agent_idx]

השוואת גישות MARL

גישה אימון ביצוע יציבות מורכבות תרחיש מומלץ
לומדים עצמאיים (IL) עצמאי מקומי נמוכה נמוכה סביבות פשוטות, 2–3 סוכנים
CTDE (MADDPG) מרוכז מקומי גבוהה בינונית פעולות רציפות, עד 5 סוכנים
COMA CTDE עם נגד-עובדתי מקומי גבוהה מאוד גבוהה תיקים מורכבים, 5+ סוכנים

איך אנחנו עושים את זה: מחסנית ומקרה

אנו משתמשים ב-אימון מרוכז, ביצוע מבוזר (CTDE) דרך MADDPG על Ray RLlib. דוגמה למערכת היררכית:

Level 0 (Portfolio Manager):
  Input: market regime + agent signals
  Output: capital allocation weights
Level 1 (Strategy Agents):
  Agent Trend: signal ∈ {buy, hold, sell} + confidence
  Agent MeanRev: signal ∈ {buy, hold, sell} + confidence
  Agent Momentum: signal ∈ {buy, hold, sell} + confidence
Level 2 (Risk Manager):
  Input: proposed positions + portfolio state
  Output: position limits + stop-loss levels

מנהל תיקים כלומד-על:

class PortfolioManager(nn.Module):
    def __init__(self, n_agents, n_assets):
        super().__init__()
        self.regime_detector = RegimeDetector()
        self.allocation_net = nn.Sequential(
            nn.Linear(n_agents * 3 + regime_dim, 128),
            nn.ReLU(),
            nn.Linear(128, n_assets),
            nn.Softmax(dim=-1)
        )

    def forward(self, agent_signals, market_features):
        regime = self.regime_detector(market_features)
        x = torch.cat([agent_signals.flatten(1), regime], dim=1)
        return self.allocation_net(x)

לזיהוי משטר שוק, אנו משתמשים במודל מרקוב נסתר (HMM) עם שלושה מצבים: שורי, דובי, צדדי. HMM היא שיטה ידועה לזיהוי משטר (ראו ויקיפדיה: מודל מרקוב נסתר).

בחירת מסגרת ל-MARL

אנו ממליצים על Ray RLlib עם PettingZoo. היא תומכת ב-CTDE, COMA ואימון מבוזר מחוץ לקופסה.

from ray.rllib.algorithms.maddpg import MADDPGConfig
config = (
    MADDPGConfig()
    .environment(env="MultiAgentTradingEnv")
    .multi_agent(
        policies={
            "trend_agent": (None, obs_space, act_space, {"gamma": 0.99}),
            "meanrev_agent": (None, obs_space, act_space, {"gamma": 0.95}),
        },
        policy_mapping_fn=lambda agent_id, **kw: agent_id,
    )
    .training(n_step=1, tau=0.01)
)
trainer = config.build()
for i in range(1000):
    result = trainer.train()

תהליך עבודה

  1. ניתוח: איסוף דרישות, ניתוח נתוני שוק, הגדרת סוכנים ומשטרים.
  2. עיצוב: בחירת ארכיטקטורה (IL/CTDE/COMA), הגדרת תצפיות ופעולות.
  3. יישום: כתיבת קוד, אימון על נתונים היסטוריים, כוונון היפרפרמטרים (קצב למידה, gamma, tau). השתמשנו בקצב למידה 0.001, גודל אצווה 256, ואימנו ל-10,000 פרקים.
  4. בדיקות: בדיקות חוזרות על נתונים מחוץ למדגם, מבחני לחץ, מסחר נייר.
  5. פריסה: אינטגרציה עם API של ברוקר, הקמת ניטור (Weights & Biases, MLflow).

מה כלול בעבודה

  • תיעוד ארכיטקטורה ופתרון.
  • מודלים מאומנים עם קונפיגורציות ולוגים.
  • קוד מקור עם CI/CD (GitHub Actions).
  • ניטור סוכנים (Weights & Biases, MLflow).
  • תיעוד תפעולי.
  • הכשרת צוות (1–2 סדנאות).

שיקולים מעשיים

עלות תיאום: מערכות MARL קשות יותר לניפוי באגים. צריך כלים לנטר כל סוכן בנפרד plus האינטראקציות ביניהם. התאמת יתר לאנסמבל: אם הסוכנים דומים מדי (מתאם אותות > 0.8), האנסמבל לא מספק גיוון. עלות חישובית: MARL יקר פי 3–5 מ-RL עם סוכן יחיד בשעות GPU. זה משתלם עם גרירות נמוכות ב-20–35% ושארפ גבוה יותר.

לוחות זמנים ומחירים

  • היררכיה בסיסית עם 2–3 סוכנים: 8 שבועות, החל מ-$25,000.
  • מערכת MARL מלאה עם CTDE, תגמולים נגד-עובדתיים, זיהוי משטר: 20–24 שבועות, החל מ-$75,000.

אנו מבטיחים שיפור מינימלי של 0.3 ביחס שארפ או שנתאים את המערכת ללא עלות נוספת. לצוות שלנו יש מומחיות מוסמכת ב-PyTorch ו-Ray. עם 7+ שנים ב-RL ו-40+ פרויקטים בפיננסים כמותיים, אנו מספקים תוצאות מוכחות. שירותי פיתוח מערכות RL שלנו מכסים גישות של סוכן יחיד ומרובה סוכנים, עם דגש על למידה מבוססת סוכנים לשווקים פיננסיים. הגישה שלנו מאומתת על ידי מחקר אקדמי (ראו Lowe et al., "Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments", 2017).

צרו קשר כדי להעריך את הפרויקט שלכם ולהגדיל את תשואות התיק שלכם.