מדוע אופטימיזציה של אסטרטגיית מסחר נשברת על נתונים אמיתיים
כיול פרמטרים על נתוני עבר כמעט תמיד מניב עקומה יפה: בגרף של שנים קודמות האסטרטגיה עולה בביטחה, אך בחשבון חי אותו קוד מתנהג אחרת. הסיבה היא שאופטימיזציה של אסטרטגיית מסחר מכיילת ערכים לקטע עבר מסוים, ולא למכניקה של השוק — בהתאמת יתר על ההיסטוריה הפרמטרים מקודדים רעש שלא יחזור עוד.
המקור הראשון לטעות — איכות הנתונים ההיסטוריים. בארכיונים יש חסרים בתנועות חדות, מחירים לפי העסקה האחרונה במקום עומק אמיתי של ספר הפקודות, זוגות שהוצאו מהמסחר פשוט חסרים — ועל מדגם כזה נבדקת אסטרטגיה שבמציאות היתה סוחרת בכלי אחר.
האובדן השני — ביצוע. החלקה של עסקאות ועמלות אוכלות חלק מהרווח, אם מחשבים לפי מחיר האות ולא לפי מחיר העסקה בפועל. פער בזמן הביצוע מוסיף רווח בין רגע הופעת האות להצבת ההזמנה: בזמן שהנתונים מגיעים למבצע, המחיר מספיק לזוז, וחלק מהעסקאות נסגרות גרוע מהחישוב.
בסך הכל מתקבל פער בין ההיסטוריה למציאות: הפרמטרים שנבחרו אינם מועברים לתנאים חדשים, גודל המדגם מסווה התאמת יתר, ופער בזמן הביצוע הופך את התוצאות לבלתי ניתנות לשחזור. נפרט כיצד זה נסגר.
מה משתנה בעבודה: דרודאון, תגובה, יציבות
סריקת פרמטרים מתבצעת לא ידנית, אלא דרך Optuna: אותו סט נתונים, זרע גנרטור קבוע, אותה שיטה לחישוב התוצאה. אחרת ההרצות אינן ברות-השוואה, והכיול הופך להתאמה לקטע היסטוריה מוצלח אחד.
- הפחתת דרודאון. הדרודאון המקסימלי מצטמצם, אבל חשוב יותר הדבר השני — זמן ההתאוששות מתקצר: החשבון חוזר לשיאים הקודמים בתוך ימים, ולא שבועות.
- זמן תגובה לשוק. בעת שינוי משטר — זינוק בתנודתיות או הצטמצמות הפער בין מחירי קנייה למכירה — הפרמטרים נלקחים מאזור שכבר נבדק ומחושבים מחדש בתוך דקות, ולא נבחרים מאפס.
- יציבות הלוגיקה של המסחר. בודקים על קטע מוחזק ועל כמה משטרי שוק: לוגיקה ששומרת על תוצאה מחוץ למדגם לא מתפרקת בשבוע הלא-סטנדרטי הראשון.
- בקרת סיכון לכל עסקה. הסיכון מוגדר כחלק מההון, גודל הפוזיציה מחושב מהתנודתיות הנוכחית — רצף של שמונה עסקאות מפסידות ברצף מפסיק להוציא מהרמה המותרת.
- ביצוע ופערים בנתונים. שיעור ההזמנות שבוטלו ולא בוצעו יורד — הכניסה מתחשבת בנזילות, ולא רק באות. פספוס של נרות או הפעלה מחדש של השירות לא שוברים את המצב: הפוזיציה משוחזרת מהצילום האחרון, כפילויות לא נפתחות.
כל סעיף נמדד לפני ואחרי על אותו סט נתונים, ולכן בדוח רואים איזו תיקון בדיוק הניב את השינוי.
משטרי כיול האסטרטגיה: השוואת גישות
משטר הכיול קובע מהיכן נלקחים ערכי הפרמטרים של האסטרטגיה וכמה מהר הם משתנים. בפועל בוחרים בין שלושה קווי מתאר: הרצה מלאה על ארכיון העסקאות, כיוונון ישירות במצב חי, ושילוב של שניהם.
משווים ביניהם לפי שלושה דברים — כמה זמן לוקח החישוב מחדש, כיצד מתנהגת התוצאה על קטע היסטוריה מוחזק, ומה קורה בעת שינוי משטר השוק.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| כיול פרמטרים על ההיסטוריה | משטרי שוק חוזרים, קיים ארכיון עסקאות ארוך ומלאי זמן להרצה | התאמה לנתוני עבר: הסט מחזיק מעמד כל עוד הסטטיסטיקה של השוק לא זזה. חישוב מחדש חד-פעמי — ושוב נדרשת הרצה חדשה |
| כיוונון אדפטיבי במצב חי | המשטרים משתנים לעיתים קרובות, אופק החזקת הפוזיציה קצר | תגובה לרעש ול"צריבה" (dithering) של פרמטרים, גידול במספר העסקאות ובעלויות. טעות בכלל החישוב מחדש משוכפלת על כל הזרם |
| קו מתאר ביצוע היברידי | אופק ארוך: נדרשים גם יציבות של הסט הבסיסי וגם תגובה לשינוי משטר | מורכב יותר לתחזוקה: נדרשים מסדרונות סחיפה, יומן שינויים ונקודת חזרה לסט הקודם |
את הגבולות מגדירים במפורש: ההיסטוריה מספקת ערכי בסיס ומסדרון שבתוכו מותר לקו המתאר החי להזיז פרמטרים, וחריגה מהגבול עוצרת את המסחר עד לבדיקה ידנית. את החישוב מחדש מבצעים לפי לוח זמנים, ולא בכל טיק.
שלבי ההטמעה: מביקורת נתונים ועד מסירה
סדר העבודה זהה גם לאסטרטגיה שנבנית כעת על נתונים היסטוריים וגם למערכת שכבר פועלת: תחילה מוודאים שהנתונים מתארים את המציאות, אחר כך — שמודל ביצוע ההזמנות תואם אותה, ורק לאחר מכן מוציאים לעבודה.
- ביקורת יומני עסקאות. מצליבים את הייצואים עם דוחות הבורסה לפי זמן, נפח, מחיר, עמלות וביצועים חלקיים, מסירים כפילויות ופערים, ומשחזרים מרווחים שהוחמצו. התוצאה — סט נתונים שסטייתו מדוח הברוקר ניתנת להסבר ולשחזור.
- שחזור סכימת ביצוע ההזמנות. מתארים כיצד ההזמנה נכנסה לספר הפקודות, היכן נוצרה החלקה, כיצד טופלו דחיות וכמה זמן עבר מהאות ועד העסקה. בלי זה התוצאה על ההיסטוריה אינה מועברת לחשבון חי.
- פורמליזציה של כללי האסטרטגיה. כניסה, יציאה, גודל פוזיציה, מגבלות סיכון ותנאי עצירה מקובעים ככללים חד-משמעיים — ניתן לבדוק אותם שורה-שורה, ולא "לפי ההיגיון של המחבר".
- הרכבת קו מתאר הבדיקה. אותם נתונים, עלויות וקוד לכל ההרצות: מנהלים גרסאות של סטים ופרמטרים, כדי שכל תוצאה תשתחזר שוב.
- כיול פרמטרים על קטע האימון עם הגבלה על מספר הצירופים הנסרקים — אחרת הערכים הנבחרים מתארים רעש, ולא חוקיות.
- בדיקה על קטע בלתי תלוי. הנתונים אינם משתתפים בכיול; בנוסף בודקים יציבות עם הזזת חלון ובתנאי עלויות מוגברים. אסטרטגיה שמחזיקה מעמד רק על מרווח אחד אינה נכנסת לעבודה.
- העלאה לפעולה ומסירה. מכוונים בקרת סיכון, רישום יומן והתראות על סטיות, מגדירים תקנון עצירה, מוסרים לצוות הלקוח תיעוד ותצורות, ומלווים את ההרצות התפעוליות הראשונות.
חבילת המסירה: תצורות, מדיניות, תקנונים
העבודה מסתיימת לא בדוח, אלא בסט של חפצי עבודה שצוות הלקוח ממשיך איתם בעצמו. תצורת קו המתאר של המסחר נשמרת במאגר עם בקרת גרסאות, שינויים עוברים בדיקה ולא נערכים ביד על השרת — ולכן כל גרסה של האסטרטגיה ניתנת לפריסה מחדש ולקבלת תוצאה ברת-השוואה על אותו קטע היסטורי.
- תצורת קו המתאר של המסחר: נקודות חיבור לבורסה, מרווחי עבודה, רשימת כלים, מגבלות על נפח הפוזיציה ומספר ההזמנות בו-זמנית.
- מדיניות גישה למפתחות הבורסה: מפתחות מסחר ללא הרשאת משיכת כספים, קו מתאר נפרד לקריאה בלבד לאיסוף נתונים, תוקף המפתח וסדר הרוטציה.
- כללי חלוקת סיכון: חלק ההון המקסימלי לפוזיציה, סטופ יומי ושבועי, התנהגות המערכת בעת ניתוק הקשר עם הבורסה.
- תקנון לבחינת פרמטרים מחדש: מה בודקים לפי לוח זמנים ומה — לפי טריגר (דרודאון עמוק מהמתוכנן, שינוי במשטר התנודתיות), מי מקבל החלטה והיכן היא מתועדת.
- תיעוד האסטרטגיה: לוגיקת הכניסה והיציאה, רשימת הפרמטרים עם הגבולות המותרים, מגבלות ידועות ותנאי הוצאת האסטרטגיה מפעילות.
- יומני מדידות: הרצות שמורות על קטעים היסטוריים, מדדים לפני ואחרי שינוי פרמטרים, וציון איזו גרסת תצורה פעלה במצב התפעולי.
חבילה כזו מאפשרת להעביר את התחזוקה לצוות אחר או לחזור לאסטרטגיה כעבור חודשים — בלי לפרק לוגים ולשחזר לוגיקה מהזיכרון.
מקרה בוחן: דרודאון קטן פי שלושה באותו מחזור
מה היה לפני
הלקוח סחר לפי סט כללים שחי בהערות: כניסה לפי תחושה ש"מתבשלת תנועה", הסטופ הועבר ידנית אם המחיר "אמור להתהפך", והחזקת הפוזיציה לא הוגבלה בשום דבר. על ההיסטוריה זה הניב דרודאון מקסימלי של 26%, אבל חודשים מסוימים נסגרו ברווח — הנקודה החלשה לא נראתה כבעיה.
לא ניתן היה לשחזר את התוצאה בפעם השנייה: הסיבות לכניסות לא תועדו, והתיקונים הידניים בחשבון החי סטו מההרצה הניסיונית.
מה שינו
את הכניסה הפכו לפורמלית: האות מתקבל לאחר סגירת הנר ואישור של טיימפריים גבוה יותר, ולא לפי נגיעה ברמה. את העברת הסטופ החליפו בטריילינג לפי תנודתיות — המכפיל נבחר לפי פיזור המחיר, ולא לפי הרצון לשמור על הפוזיציה.
את ההחזקה הגבילו באופק: אם התנועה אינה מאושרת בתוך מספר נרות מוגדר, הפוזיציה נסגרת לפי כלל, ולא לפי מצב רוח.
במה זה מאומת
כל הרצה חושבה ב-Backtrader ונכנסה ליומן המדידות: סט הפרמטרים, תאריך, דרודאון, פקטור רווח, מספר עסקאות, שיעור היציאות לפי כלל הסטופ. קטע האימון והקטע המוחזק חולקו מראש, ולכן התאמה לנתוני העבר סוננה מיד.
הדרודאון ירד מ-26% ל-9% באותו מחזור, פקטור הרווח עלה מ-1.1 ל-1.4, וכ-40% מהאותות מסוננים על ידי פילטר הכניסה. ההתערבויות הידניות הוסרו, ובחינה מחדש של הסט לאחר שינוי משטר שוק אורכת שעות במקום ימים.
במה נבדלת הבדיקה על ההיסטוריה מהזמן האמיתי?
החישוב הארכיוני מתבצע על נרות שכבר נסגרו: מחיר העסקה ידוע מראש, ההזמנה מבוצעת באופן מיידי ובשלמותה. במסחר חי עובר זמן בין האות לעסקה, המחיר מספיק לזוז, וחלק מהנפח נשאר לא מבוצע. מכאן נובע הפער בין הארכיון למסחר החי — וכמעט תמיד הוא מצטבר לרעת האסטרטגיה.
המקור הראשון — השהיית הביצוע. היא מורכבת ממקטעים: חישוב האות, שליחת ההזמנה, הצבה בתור, אישור העסקה. בשוק רגוע שברי השנייה האלה אינם מורגשים, אבל בתנועה חדה הפער בין המחיר בפועל למחיר המחושב הופך למערכתי, ולא להפרעה אקראית — המודל נכנס שוב ושוב גרוע מכפי ששיער.
המקור השני — עמלות והחלקה. עמלת הבורסה נגבית מכל עסקה ולעיתים קרובות כלל אינה מגולמת בחישוב הארכיוני. ההחלקה תלויה בעומק ספר הפקודות: הזמנה גדולה מזיזה בעצמה את המחיר, ובשוק דק מחיר העסקה בפועל גרוע באופן ניכר מזה שבו המודל "ביצע" את העסקה על הגרף.
בקרת הפער מוצבת לפני העלאת האסטרטגיה לפעולה, ולא אחרי. המודל מורץ עם אותן מגבלות כמו קו המתאר החי: השהיה, עמלה, תקרת נפח להזמנה אחת, ביטול של יתרה שלא בוצעה.
לאחר מכן יומן העסקאות החיות מוצלב עם ההרצה הארכיונית על אותו מרווח — מחשבים את שיעור ההזמנות שבוצעו, את הפער הממוצע בין מחיר העסקה למחיר המחושב ואת ההפרש בתוצאה הסופית.
כל עוד הפער בתוך הסבילות, האסטרטגיה פועלת בנפח מוגבל והסבילות נבדקת שוב. אם היא הופרה, מחשבים מחדש את הפרמטרים ואת כללי הכניסה, ולא "מכווננים" את ההיסטוריה לתוצאה הרצויה.
מגבלות וסיכונים: נתונים, עמלות, החלקה
פורמלית, אסטרטגיה יכולה להציג תוצאה יציבה על ההיסטוריה, אבל אין בכך כדי לעבור אוטומטית למסחר אמיתי. ארכיונים של בורסות מכילים חסרים: שעות השבתה, קטיעות בזרם העסקאות, מרווחי נרות שונים על אותו כלי.
אם הלוגיקה תלויה בנפח ובמספר העסקאות, חורים כאלה מעוותים את הבדיקה — היא רואה נזילות שלא היתה באותו רגע.
המגבלה השנייה — שינוי התנאים של הבורסה עצמה: תעריפים, צעד המחיר המינימלי, כללי עיגול וביטול הזמנות משתנים, והתצורה הקודמת מאבדת את משמעותה. בזוגות דקים נוספים גם החלקה: ההזמנה מבוצעת במחיר גרוע מהצפוי, והפער הרחב בין קנייה למכירה אוכל חלק מהרווח עוד לפני הכניסה לפוזיציה. ואף הרצה על ההיסטוריה אינה מבטיחה תשואה — זהו מבחן של השערה, ולא הבטחה לתוצאה.
כיצד לזהות שהאסטרטגיה עברה התאמת יתר להיסטוריה?
הסימן — התוצאה נופלת בחדות בשינוי קטן של הפרמטרים או במרווח נרות סמוך. בודקים על קטע שלא השתתף בכיול, ומסתכלים על הפיזור, ולא על ההרצה הטובה ביותר.
מה עושים עם חסרים בארכיון הבורסה?
מסמנים אותם כפער ולא ממלאים בערכים מומצאים — אחרת הבדיקה תספור עסקאות שלא היו. בקטעים עם קטיעות האסטרטגיה אינה מוערכת, ואת התוצאה מחשבים לפי חלק התקופה המכוסה.
נדון במשימה: מה לשלוח ואיך נחזור עם תוכנית
כדי שאופטימיזציה של פרמטרים של אסטרטגיית מסחר תניב תוצאה ניתנת לשחזור, ולא התאמה לעבר, יש צורך בנתוני מקור לחישוב. להלן הסט המינימלי שמכסה את רוב המשימות; אם משהו חסר, אמרו מיד — נסייע במה להחליף.
- כללי כניסה ויציאה במהדורה הנוכחית: אינדיקטורים, תנאי הפעלה, לוגיקת הסטופים ומימוש הרווח.
- ארכיון עסקאות לתקופה: ייצוא מהטרמינל או מהבורסה בפורמט קריא למכונה, עם חותמות זמן ונפח הפוזיציה.
- מגבלות סיכון: דרודאון מותר, חלק מקסימלי מהפיקדון בפוזיציה אחת, תקרה למספר העסקאות.
- רשימת הבורסות והכלים: שוק ספוט או חוזים עתידיים, הזוגות הזמינים, עומק הנתונים ההיסטוריים.
- דרישות ביצוע: הפעלה ידנית, אותות או מסחר אוטומטי, השהיית התגובה המותרת.
- קריטריון הצלחה: מדדים שלפיהם אתם מקבלים את התוצאה — יחס תשואה לדרודאון, שיעור העסקאות הרווחיות, יציבות מחוץ למדגם האימון.
מכאן סדר שיתוף הפעולה פשוט: מנתחים את מה שנשלח, בודקים את שלמות ההיסטוריה ואת נכונות סימון העסקאות, ובמידת הצורך מחזירים רשימת הבהרות. לאחר מכן מכינים הערכה ותוכנית עבודה — שלבים, מה בודקים בכל שלב, ואילו מדדים קובעים כקריטריון קבלה.
תארו את המשימה בצורה חופשית וצרפו את מה שיש בהישג יד — נחזור עם הערכה ותוכנית עבודה ומיד נאמר אילו נתונים חסרים.







