PPO טריידינג: מדוע הסוכן מאבד יציבות בשוק החי
סוכן מאומן כמעט תמיד נראה משכנע על ההיסטוריה: עקומת התשואה חלקה, ירידות נשמרות בגבולות שהוגדרו, מדדים על קטע מופרד תואמים לאלה של האימון. הבעיה היא שהשוק אינו סטציונרי.
תנודתיות, נזילות וקשרים בין כלים משתנים, ואילו המדיניות שנמצאה בלמידת חיזוק נשארת מכווננת להתפלגות המחירים בעבר.
PPO מעדכן את המדיניות בצעדים קטנים, ומגביל את הסטייה מהגרסה הקודמת — זה מייצב את ההתכנסות, אך אינו מגן מפני התאמת יתר של הסוכן. פונקציית התגמול מותאמת לקטע היסטורי מסוים, והמודל מתחיל לשחזר את המאפיינים שלו: התפרצויות נדירות, אפקטים עונתיים, רעש בשעות דלילות. בשינוי משטר השוק, הדראודאון של האסטרטגיה חורג מהגבולות שהראה כל ריצה על ההיסטוריה.
הסיבות בדרך כלל הנדסיות, ולא "השוק השתנה". מאפיינים מחושבים בהשהיה ביחס לרגע קבלת ההחלטה; עלויות ביצוע וסליפג' מחושבות בגסות; קטע הבדיקה דומה מדי לזה של האימון מבחינת תנודתיות.
ספריות כמו Stable-Baselines3 מספקות לולאת אימון עובדת, אך בחירת הסביבה, חלוקת ההיסטוריה ובדיקות המשטר נשארות באחריות הצוות.
לכן הטיעון המכריע הוא בדיקה חיה: הסוכן פועל על מחירים אמיתיים בזמן אמת עם נפח עסקאות מוגבל, ואנחנו משווים את ההתנהגות הצפויה של המדיניות לזו שבפועל. את הפער רואים רק כאן. בהמשך נפרט כיצד זה נסגר: אילו בדיקות יציבות אנחנו מכניסים וכיצד מעבירים את הסוכן מההיסטוריה לעסקאות אמיתיות.
יציבות הסוכן, בקרת סיכון ושחזוריות התוצאה
סוכן שאומן על משטר שוק אחד מאבד יציבות כשהתנודתיות משתנה: המדיניות זוכרת את הסטטיסטיקה של התקופה, ולא את לוגיקת ההתנהגות. לכן את האימון מנהלים בחלון מתגלגל, ובכל שלב בודקים את המודל על נתונים שהוא לא ראה.
יציבות מודדים לא לפי תשואה ממוצעת, אלא לפי דראודאון בקטעים האלה — אם הוא גדל מהר יותר מאשר בחלון האימון, עוצרים את האימון ומנתחים את הסיבה.
בקרת סיכון מוטמעת בשתי נקודות. בפונקציית התגמול — קנס על שונות ועל חריגה ממגבלת הפוזיציה, כדי שהסוכן לא ירוויח מהימורים גדולים ונדירים. בביצוע — מגבלות קשיחות מעל המדיניות: חלק מההון לעסקה אחת, סטופ יומי לפי דראודאון והשבתת האסטרטגיה בפריצת סף, ללא תלות בתחזית הנוכחית.
שחזוריות נשמרת ברמת התשתית: מקבעים את זרע האקראיות, הרכב וסדר נתוני השוק, פרמטרי הסביבה וההיפר-פרמטרים — הכל במאגר לצד הקוד. ריצה חוזרת על אותו מערך נתונים נותנת מדדים בטווח שהוגדר, וסטייה נקראת כשגיאת קונפיגורציה, ולא כ"השוק השתנה".
במימוש הייחוס של PPO נעזרים ב-Stable-Baselines3, כדי להפריד בין האפקט של השיפורים שלנו לאפקט של הספרייה עצמה.
בפלט — מערך מדדי איכות עם היסטוריה: דראודאון מקסימלי וזמן ההתאוששות אחריו, שיעור ההשבתות לפי מגבלות סיכון, פיזור התוצאה בין ריצות. מהם רואים היכן הסוכן יציב והיכן נדרש פילטר נוסף — זהו סיכון מנוהל, ולא הבטחת תשואה.
אפשרויות בניית הסוכן: אימון מאפס, כיוונון עדין, היברידי
בחירת המצב קובעת כמה נתונים יידרשו בקלט, כמה מהר תופיע המדיניות העובדת הראשונה וכמה כואב יהיה שינוי מערך הכלים. אימון מאפס ב-PPO נותן שליטה מלאה בהתנהגות הסוכן, אך דורש היסטוריית מחירים ארוכה וסובלנות לתשואה לא יציבה באיטרציות המוקדמות.
כיוונון עדין של המודל מתחיל ממדיניות שכבר נבנתה: זה קצר משמעותית בזמן עד לתוצאה, אולם הסוכן יורש הטיות מהאימון הקודם ובקלות "שוכח" משטרים שהופיעו לעתים רחוקות בנתונים החדשים. סכימה היברידית מסירה חלק מהסיכונים האלה, ומחלקת את התפקידים בין חוקים לבין החלק הנלמד.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| אימון מאפס | מערך כלים ואופק החזקת פוזיציה משלכם, שאינם קיימים במערכי נתונים מוכנים | התחלה ארוכה, רגישות לכיול הקנס על סיכון, התאמת יתר לעבר כשהיסטוריה קצרה |
| כיוונון עדין של המודל | כבר יש מדיניות עובדת, צריך להוסיף כלי או משטר שוק חדש | העברת הטיות ישנות, סיכון להידרדרות במשטרים קודמים, נדרשת ריצת ביקורת על קטע מופרד |
| סכימה היברידית | חוקים קובעים מסגרת סיכון, הסוכן מקצה הון בתוכה | יותר קוד ובדיקות, נדרש ניתוח תרומת כל שכבה לתוצאה הסופית |
בחירת המצב מתחילה בביקורת נתונים ובמדד היעד: היכן גבולות הדראודאון המותר, באיזו תדירות משתנה הרכב הכלים, האם יש במה לבדוק את המדיניות מחוץ לקטע האימון. לפי התשובות האלה רואים אם כיוונון עדין מספיק או שנדרשת סכימה היברידית — ואליה כבר מתכננים את היקף העבודה.
כיצד בנויה העבודה: ביקורת נתונים, סכימה, כיול, בדיקה
התהליך מתנהל בשלבים, ובכל אחד יש נקודת ביקורת: אתם רואים מה בדיוק נבדק ואילו מסקנות נובעות מכך. האימון מתחיל רק לאחר שהנתונים והגדרת המשימה מקובעים — אחרת אי אפשר לפרש את המדדים.
- ביקורת נתונים. בודקים את הרציפות של המחירים, מאזנים מרווחים ואזורי זמן, מחפשים חוסרים, חריגים ופערים באירועים תאגידיים. בנפרד מנטרלים הטיית שרידות: במדגם נשארים רק כלים שנסחרו באותו זמן.
- הגדרת המשימה. מקבעים את המטרה — תשואה מתואמת סיכון או בקרת דראודאון — וכן את האופק, הרכב המאפיינים הנצפים, מגבלות נפח ומינוף.
- סביבת ביצוע ותגמול. בונים סימולטור עם עמלות, סליפג' והשהיית פקודה. התגמול מעניש מחזור יתר והעברות חדות, כדי שהסוכן לא יתאים את עצמו לביצוע אידיאלי.
- כיול אימון PPO. בוחרים אופק יתרון, סף קיטוע, גודל באץ' וקצב למידה. מספר ריצות עם זרעים התחלתיים שונים מציגות את הפיזור, ולא את התוצאה הטובה ביותר.
- בדיקת יציבות. מריצים את הסוכן על תקופה מופרדת ובמצבים שלא היו באימון: מגמה, דשדוש, התפרצות תנודתיות. מודדים את ההידרדרות בסליפג' ובהשהיה מוגדלים.
- מסירת הפתרון. מוסרים קוד של הסביבה והאימון, קונפיגורציות של ריצות, משקלים שמורים, כללי כיוונון עדין על נתונים חדשים ודוח עם מדדים וגבולות ישימות.
נקודות ביקורת — אחרי ביקורת הנתונים, לפני תחילת האימון ולפני המסירה: בכל אחת מקבעים איזו תוצאה נחשבת מקובלת.
הרכב המסירה: קוד הסוכן, קונפיגורציות, תיעוד, נהלים
מסירה היא לא ארכיון עם קוד, אלא מערכת עובדת שהמהנדסים שלכם מריצים ומתחזקים בלעדינו. כל ארטיפקט מכסה סוג משלו של משימות ונבדק בקבלה: סוכן PPO עובר אימון ויוצא לקטע בדיקה של השוק בתשתית שלכם.
- קוד הסוכן — אימון ויישום המדיניות: סביבה עם נתוני שוק, מודל מדיניות וערך, פילטרי סיכון, עטיפת פקודות. עולה לפי הוראות בסביבה נקייה.
- קונפיגורציות אימון — אופק, מקדם הגבלת צעד המדיניות, גודל המדגם, מספר סביבות מקבילות, מאפיינים, קיבוע אקראיות. ריצה חוזרת משחזרת את אותה מדיניות.
- יומני ריצה ומדדים — עקומות תגמול, תשואה ודראודאון, תדירות עסקאות, התפלגות פעולות הסוכן. מהם רואים אם המודל הידרדר או שמשטר השוק השתנה.
- סכמות והחלטות — זרימת נתונים מהמחירים ועד לפקודה, לוגיקת פילטרי הסיכון, נקודות הסתעפות וגבולות בין מודולים.
- תיעוד — תיאור הסביבה, התצפיות ופונקציית התגמול, מגבלות סיכון, סדר כיוונון עדין על נתונים חדשים.
- נהלי תחזוקה — קריטריונים לעצירת מסחר, סדר אימון מחדש, חזרה למצב שמור של המודל הקודם.
- הרשאות גישה — תפקידים ומפתחות למאגר הנתונים, מרשם המודלים ומערכת הברוקר נרשמים על שמכם, והגישות שלנו מבוטלות.
קבלה — המהנדסים שלכם פורסים את המערכת בעצמם וחוזרים על ריצת האימון. לאחר מכן התחזוקה מתנהלת לפי הנהלים, בלי לפנות אלינו.
PPO טריידינג תחת עומס: מדדים לפני ואחרי הטמעה
מה היה לפני ההטמעה
גרסת הבסיס של סוכן PPO אומנה על משטר שוק אחד — קטע מגמתי עם תנודתיות נמוכה. בשינוי המשטר המדיניות המשיכה להגדיל פוזיציות באותו כיוון: הדראודאון הגיע ל-34% מההון המחושב, וההתאוששות ארכה פי שניים מהצניחה עצמה.
בקרת הסיכון הייתה מחוץ למודל — מגבלות קשיחות חתכו פוזיציות כבר אחרי הפתיחה, לכן הסוכן למד על התפלגות תגמולים אחת וסחר באחרת.
מה שינו
שכבת הסיכון הועברה לתוך סביבת האימון: מגבלות על חשיפה וצעד שינוי הפוזיציה הפכו לחלק מפונקציית התגמול, ולא לפילטר חיצוני. הוספנו זיהוי משטר לפי תנודתיות ותשואה — בשינוי משטר המדיניות עוברת לפרופיל מוגן במקום להמשיך את המגמה.
אימנו ווולידציה על נתונים היסטוריים מהארכיון הציבורי של Binance, תוך הרצה נפרדת של תרחישי היפוך חדים.
מה נהיה אחרי
הדראודאון המקסימלי ירד מ-34% ל-11% באותו אופק בדיקה, וההתאוששות אחרי הצניחה הואצה בערך פי שלושה. יחס התשואה לסיכון עלה מ-0.8 ל-1.5 — יציבות הסוכן הפסיקה להיות תלויה במשטר השוק הנוכחי.
מספר החלפות הפוזיציה ירד ב-40%, עלויות הביצוע כבר לא אוכלות את התוצאה, ובקרת הסיכון הפכה לחלק מהמדיניות: הסוכן לא חורג ממגבלות הסיכון באף סשן.
במה הסוכן שונה מאסטרטגיה שנקבעת ידנית בכללים?
כללים שנקבעים ידנית הם מערך תנאים: חציית ממוצעים נעים, סף תנודתיות, רמת סטופ. החוזק שלהם בצפיות: כל החלטה מוסברת במשפט אחד. החולשה מתגלה בשינוי משטר שוק: פרמטרים שנבחרו במגמה נשברים בדשדוש, ובנייה מחדש הופכת לסריקה ידנית של אפשרויות, שקל להתאים אותה לעבר.
סוכן ל-PPO טריידינג בנוי אחרת. הוא לא שומר תנאים, אלא לומד מדיניות — התפלגות הסתברויות על פעולות, תוך מקסום התשואה הצפויה עם קנסות על סיכון. מרחב פעולות רציף מאפשר לקבוע גודל פוזיציה, ולא רק כניסה ויציאה, ולהתחשב בעשרות מאפיינים בצירופים שאדם לא ירשום ככללים.
הלמידה מנצחת במקומות שבהם התלויות רב-ממדיות ותנועתיות: גודל פוזיציה, התחשבות בו-זמנית בקורלציות, מיקרו-מבנה של ספר הפקודות, כמה אופקי החזקה.
כיוונון עדין על חלון נתונים טרי מאפשר להגיב מהר יותר לשינוי משטר, אבל רק אם שינוי דומה כבר היה בהיסטוריה — אחרת הסוכן באותה מידה של ביטחון שולף אקסטרפולציה של רעש.
הסוכן מפסיד בפרשנות. משקלי הרשת לא נקראים ככלל, ולכן קשה יותר להסביר לוועדת הסיכון למה הפוזיציה פתוחה — נדרש ניתוח נפרד של תרומת המאפיינים. גם הדרישות לנתונים ולפונקציית התגמול גבוהות יותר: קנס קשיח על דראודאון הופך את הסוכן לפסיבי, ורך מדי מעודד מינוף שלא ישרוד עלויות אמיתיות.
בפועל זה לא בחירה בין שניים. הכללים נשארים כמסגרת סיכון — מגבלות פוזיציה, סטופים, איסור מסחר בחלונות מסוימים — והסוכן פועל בתוכם, במקום שבו הכללים התרבו מכדי לתאר אותם ידנית. שתי הסכמות נבדקות באותו אופן: על תקופה מופרדת, בהתחשבות בעמלות ובסליפג', עם הערכה נפרדת במגמה ובדשדוש.
ספקות טכניים: יציבות, נתונים, בקרת סיכון
חמישה ספקות טכניים שאנחנו בדרך כלל מסירים לפני תחילת העבודה: האם הסוכן יעמוד בשינוי משטר השוק, האם יש מספיק נתונים, היכן עוברים גבולות הסיכון, מה עם התחזוקה וכיצד לבדוק את התוצאה. להלן בקצרה על כל אחד.
יציבות: מה אם השוק ישנה אופי?
בודקים לא על קטע היסטוריה אחד, אלא על סדרת חלונות, כולל תנועות חדות ונזילות נמוכה. הסוכן נחשב מתאים אם ההתנהגות נשמרת בשינוי משטר, ולא רק בקטע נוח.
איכות נתונים: האם ההיסטוריה תספיק?
בודקים שלמות, תדירות ופערים במחירים, נכונות אירועים תאגידיים. נתונים לאימון ולבדיקה מפרידים לפי זמן — אחרת מקבלים תוצאה יפה אך חסרת תועלת.
מגבלות סיכון: מי מחזיק את המסגרת?
מגבלות פוזיציה, דראודאון ומספר עסקאות מטמיעים בסביבת האימון — הסוכן לומד בתוך המסגרת. בנוסף שמים בקרה חיצונית שפועלת ללא תלות בהחלטות המודל.
תחזוקה: מה אחרי ההרצה?
המודל מאבד דיוק ככל שהשוק משתנה, וזה נורמלי, לא תקלה. לכן מקבעים מראש אילו מדדים עוקבים, באילו סטיות מאמנים מחדש וכיצד חוזרים לגרסה קודמת של הסוכן.
דרכי בדיקה: איך להשתכנע לפני ההרצה?
שלוש רמות: בדיקה על תקופה מופרדת, ריצה בתרחישי לחץ ועבודה בנפח קטן במערכת אמיתית. התאמה של התוצאות בכל השלוש — תנאי למעבר לקנה מידה מלא.
נדון במשימה: מה נדרש להערכה ולתוכנית עבודה
להערכת משימת PPO טריידינג לא נדרש ארכיון מלא של מערכת המסחר — די בתיאור הסביבה והמטרה. ככל שנתוני הקלט מדויקים יותר, כך יש פחות הנחות בתוכנית העבודה: מיד רואים היכן הסימולטור יתאים לביצוע אמיתי והיכן יידרש בדיקה נפרדת.
מה לשלוח כדי שנחזור עם הערכה:
- כלי ואופק: מה סוחרים, באיזה טיימפריים, באיזו תדירות הסוכן מקבל החלטה;
- נתונים היסטוריים: עומק הסדרה, הרכב השדות (מחירים, נפחים, ספר פקודות), כיצד מסומנים חוסרים;
- מדד יעד: תשואה בהתחשבות בדראודאון, יחס שארפ או שיעור עסקאות רווחיות;
- מודל עלויות: עמלות, סליפג', השהיית ביצוע — בלעדיהם הסוכן ילמד על תשואה שלא קיימת;
- מגבלות סיכון: דראודאון מקסימלי, מגבלת פוזיציה, כללי עצירת מסחר;
- תשתית: מהיכן מגיעים הנתונים, לאן הסוכן שולח אותות, האם יש מערכת בדיקה;
- מה כבר ניסיתם ומדוע התוצאה לא התאימה.
לפי הנתונים האלה מרכיבים תוכנית עבודה: הכנת הסביבה וחישוב מחדש של ההיסטוריה, כיול פונקציית התגמול, אימון וולידציה של המדיניות, בדיקה על תקופה מופרדת, בדיקות לחץ בקטעים תנודתיים. שלבים ולוחות זמנים מקבעים יחד עם קריטריוני קבלה — באיזו תוצאה הסוכן נחשב מוכן להרצה מוגבלת.
תארו את המשימה בצורה חופשית — נחזור עם הערכת המשימה ותוכנית עבודה לפי שלבים.







