התאמת יתר באסטרטגיות מסחר: איך לזהות ולמנוע
התאמת יתר (curve fitting) באסטרטגיות מסחר: יותר מדי פרמטרים, חיפוש בנתונים, in-sample מול out-of-sample, walk-forward ובדיקות חוסן - ואיך לזהות שהאסטרטגיה שלכם מותאמת מדי.
אחת הדרכים הבטוחות לבנות אסטרטגיה שנראית מבריקה על הגרף ומאכזבת במסחר חי היא התאמת יתר. ככל שכלי הבדיקה נעשים קלים ומהירים יותר, כך קל יותר ליפול בזה. במאמר הזה נסביר מה זו התאמת יתר, למה היא קורית, ואילו בדיקות עוזרות להבחין בין יתרון אמיתי לבין רעש.
מה זו התאמת יתר
התאמת יתר (overfitting, ובהקשר מסחר גם curve fitting) היא מצב שבו אסטרטגיה לומדת את הרעש של נתוני העבר במקום את הדפוס שחוזר על עצמו. התוצאה: ביצועים מצוינים על הנתונים שעליהם בניתם אותה, וביצועים חלשים על נתונים חדשים.
נתוני מחיר מכילים מעט "אות" והרבה מאוד רעש אקראי. כל תקופה היסטורית כוללת אירועים חד-פעמיים: יום עם הודעה מפתיעה של בנק מרכזי, שבוע של תנודתיות חריגה, מגמה ארוכה במיוחד. אסטרטגיה שמכוונת כך שתנצל בדיוק את האירועים האלה תיראה מושלמת בדיעבד, אבל האירועים האלה לא יחזרו באותה צורה.
יותר מדי פרמטרים
כל פרמטר באסטרטגיה הוא "כפתור" שאפשר לכוונן: אורך ממוצע נע, מרחק סטופ, שעת התחלה, סף של אינדיקטור. עם שני פרמטרים קשה להתאים את עצמכם לעבר. עם עשרה פרמטרים, כמעט כל סדרת נתונים אפשר "להסביר".
דוגמה היפותטית: אסטרטגיה עם ממוצע נע של 37 נרות, סטופ של 23 טיקים, כניסה רק בין 09:47 ל-11:12, ורק כשה-RSI מתחת ל-41. כל מספר כזה נבחר כי הוא נתן את התוצאה הטובה ביותר על העבר. השאלה החשובה: למה דווקא 37 ולא 35 או 40? אם אין לכם תשובה הגיונית שאינה "כי זה עבד הכי טוב", זה סימן אזהרה.
כלל אצבע: ככל שיש פחות פרמטרים ויותר עסקאות בבדיקה, כך התוצאה אמינה יותר.
חיפוש בנתונים (data snooping)
גם אם לכל אסטרטגיה בודדת יש מעט פרמטרים, הבעיה חוזרת כשבודקים הרבה רעיונות על אותם נתונים. אם תבדקו מאה וריאציות, חלקן ייראו מצוין במקרה בלבד. זה נקרא data dredging או data snooping.
הבעיה מתגנבת גם בלי כוונה: אתם בודקים רעיון, הוא לא עובד, אתם משנים משהו קטן, בודקים שוב, וכן הלאה. אחרי חמישים סבבים, הנתונים כבר "דלפו" לתוך האסטרטגיה, גם אם אף פעם לא הרצתם אופטימיזציה אוטומטית. רשמו כמה וריאציות בדקתם. המספר הזה חשוב כמעט כמו התוצאה.
In-sample מול out-of-sample
הכלי הבסיסי נגד התאמת יתר הוא הפרדה בין נתונים:
- In-sample: הנתונים שעליהם אתם מפתחים ומכווננים את האסטרטגיה.
- Out-of-sample: נתונים ששמרתם בצד ולא נגעתם בהם בכלל במהלך הפיתוח.
רק אחרי שהאסטרטגיה "קפואה" מריצים אותה על נתוני ה-out-of-sample. אם הביצועים קורסים, כנראה שיש התאמת יתר. חשוב: אם אחרי זה אתם חוזרים לשנות את האסטרטגיה ובודקים שוב על אותם נתונים, הם כבר לא באמת out-of-sample.
בדיקת walk-forward
walk-forward היא הרחבה של הרעיון. מחלקים את ההיסטוריה לחלונות עוקבים. בכל שלב מכווננים על חלון אחד ובודקים על החלון שאחריו, ואז מזיזים את שני החלונות קדימה וחוזרים על התהליך.
- מכווננים על שנה 1, בודקים על הרבעון הבא.
- מזיזים קדימה: מכווננים על התקופה החדשה, בודקים על הרבעון שאחריה.
- מחברים את כל תקופות הבדיקה לעקומה אחת.
העקומה המחוברת מדמה מצב אמיתי שבו אתם מכווננים מדי פעם ואז סוחרים בעתיד שאתם לא מכירים. אם היא נראית הרבה יותר גרוע מהאופטימיזציה המלאה, זה מידע חשוב.
בדיקות חוסן
מעבר להפרדת נתונים, יש כמה בדיקות פשוטות שכל סוחר יכול לעשות:
- שכונת פרמטרים: שנו כל פרמטר מעט למעלה ולמטה. אסטרטגיה חסינה תראה תוצאות דומות על טווח רחב. אם רק ערך אחד עובד ו"השכנים" שלו מפסידים, מצאתם שיא מקרי.
- שווקים קרובים: אם האסטרטגיה עובדת על NQ, איך היא מתנהגת על ES? לא חייב להיות זהה, אבל קריסה מוחלטת מעוררת שאלות.
- טיימפריימים שונים: שינוי קל בטיימפריים לא אמור להפוך אסטרטגיה רווחית להפסדית.
- תקופות שונות: בדקו כל שנה בנפרד. האם הרווח מגיע מתקופה קצרה אחת?
- עלויות מחמירות: הוסיפו החלקה ועמלות גבוהות יותר. יתרון אמיתי צריך לשרוד את זה. עוד על כך במאמר בקטסטינג מול מסחר חי.
- הסרת העסקאות הטובות ביותר: הוציאו את חמש העסקאות הרווחיות ביותר. אם כל הרווח נעלם, האסטרטגיה תלויה במזל.
סימנים שהאסטרטגיה שלכם מותאמת מדי
- עקומת הון חלקה כמעט בצורה מושלמת, בלי תקופות קשות.
- הרבה פרמטרים עם ערכים "מוזרים" ומדויקים.
- מעט עסקאות ביחס למספר הפרמטרים.
- ביצועים טובים רק בטווח צר מאוד של הגדרות.
- תוצאות שמשתנות מאוד בכל פעם שמוסיפים עוד קצת היסטוריה.
- כללים מיוחדים שנוספו כדי "לתקן" הפסדים ספציפיים בעבר.
- פער גדול בין in-sample ל-out-of-sample.
דוגמה: אותו רעיון, שתי גישות
נניח רעיון היפותטי פשוט: כניסה בכיוון הפריצה של טווח השעה הראשונה של הסשן האמריקאי ב-NQ.
גישה א' מתחילה מאופטימיזציה רחבה. היא בודקת אורכי טווח מ-10 עד 90 דקות, עשרות מרחקי סטופ ויעד, מסנן של אינדיקטור ומסנן של ימים בשבוע. אחרי אלפי שילובים נבחר השילוב הטוב ביותר, עם טווח של 47 דקות, ללא מסחר בימי שלישי. התוצאה על העבר נראית מרשימה, אבל כמעט אי אפשר לדעת כמה ממנה הוא מזל.
גישה ב' מתחילה מהשאלה למה הרעיון אמור לעבוד. היא בוחרת טווח של 30 או 60 דקות, כי אלה נקודות זמן שמשתתפים רבים מתייחסים אליהן, וסטופ שנגזר מגודל הטווח עצמו. יש לה שני פרמטרים בלבד. היא בודקת אותם על in-sample, ואז מריצה פעם אחת על out-of-sample ועל ES כבדיקת שכונה.
התוצאה של גישה ב' כנראה תיראה פחות יפה על הגרף. אבל היא מבוססת על הסבר, והביצועים שלה על נתונים חדשים קרובים יותר למה שאפשר לצפות במסחר חי. המספרים ברעיון הזה הם להמחשה בלבד, ואין כאן המלצה על אסטרטגיה.
צ'קליסט לפני שמאמצים אסטרטגיה
- יש לי הסבר הגיוני למה הרעיון אמור לעבוד, שאינו "כי זה עבד בעבר".
- מספר הפרמטרים קטן, ולכל אחד יש סיבה.
- רשמתי כמה וריאציות בדקתי בסך הכול.
- הרצתי out-of-sample פעם אחת בלבד, אחרי שהאסטרטגיה הוקפאה.
- התוצאות יציבות כששיניתי פרמטרים מעט.
- התוצאות שורדות עלויות מחמירות והסרה של העסקאות הטובות ביותר.
- הגדרתי מראש מה ייחשב לכישלון בתקופת הבדיקה קדימה.
הסעיף האחרון חשוב במיוחד. אם לא מגדירים מראש מתי מפסיקים, קל מאוד להסביר כל תקופה רעה כ"זמנית".
עיקרי הדברים
- התאמת יתר היא למידה של רעש במקום דפוס, והיא נראית מצוין רק בדיעבד.
- פחות פרמטרים ויותר עסקאות הם הגנה בסיסית.
- שמרו נתונים out-of-sample ואל תגעו בהם עד שהאסטרטגיה קפואה.
- walk-forward ובדיקות שכונת פרמטרים חושפות שיאים מקריים.
- גם אסטרטגיה שעברה את כל הבדיקות צריכה בדיקה קדימה וגודל פוזיציה זהיר.
שום בדיקה לא מבטיחה הצלחה עתידית, ולכן השלב שאחרי המעבדה חשוב לא פחות. WeCore מאפשרת להריץ אסטרטגיה או התראות במצב סימולציה עם כללי סיכון אוטומטיים, כך שאפשר לראות איך היא מתנהגת על נתונים חדשים לפני שמסכנים חשבון חי. למבוא כללי, ראו מה זה מסחר אלגוריתמי.