Out-of-Sample Testing מוסבר
Out-of-Sample Testing מוסבר: איך מחלקים נתונים לתקופת כיוונון ותקופת בדיקה עיוורת, ולמה זה השלב שחושף אם אסטרטגיה עברה Overfitting.
Out-of-Sample Testing הוא חלוקת הנתונים ההיסטוריים לשתי תקופות נפרדות: תקופת כיוונון (In-Sample), שבה מתאימים את פרמטרי האסטרטגיה, ותקופת בדיקה עיוורת (Out-of-Sample), שבה בודקים את הביצועים על נתונים שהאסטרטגיה "לא ראתה" בזמן הכיוונון. זהו אחד הכלים הפשוטים והחשובים ביותר לזיהוי Overfitting — כיוונון יתר של אסטרטגיה לרעש הספציפי בנתוני העבר.
למה בדיקה על כל הנתונים בבת אחת מטעה
הטעות הנפוצה ביותר במתחילים: לוקחים אסטרטגיה, מריצים אותה על כל הנתונים ההיסטוריים הזמינים, מכווננים פרמטרים עד שהתוצאה נראית מצוינת — ומסתפקים בזה. הבעיה: אין שום דרך לדעת אם התוצאה משקפת דפוס אמיתי בשוק, או שהיא פשוט "התאמה" לנתונים הספציפיים שנבדקו. Out-of-Sample Testing נותן דרך אובייקטיבית לבדוק את זה.
איך מחלקים את הנתונים
import pandas as pd
data = pd.read_csv("historical_prices.csv", parse_dates=["date"], index_col="date")
split_date = "2023-01-01"
in_sample = data[data.index < split_date] # לכיוונון פרמטרים
out_of_sample = data[data.index >= split_date] # לבדיקה עיוורת בלבד
חלוקה נפוצה: 70%-80% מהנתונים לכיוונון (In-Sample), 20%-30% לבדיקה עיוורת (Out-of-Sample). חשוב שהחלוקה תהיה כרונולוגית — הכיוונון תמיד על התקופה המוקדמת יותר, הבדיקה על התקופה המאוחרת — כדי לדמות איך אסטרטגיה הייתה מיושמת בפועל.
הכלל הברזל: אף פעם לא נוגעים ב-Out-of-Sample בזמן הכיוונון
זו הנקודה הכי קריטית ליישום נכון: כל תהליך בחירת הפרמטרים — RSI threshold, אורך ממוצע נע, מרחק Stop Loss — חייב להתבצע אך ורק על נתוני ה-In-Sample. ברגע שמסתכלים על תוצאות ה-Out-of-Sample ומשנים את הפרמטרים בהתאם, התקופה כבר לא "עיוורת" יותר — היא הפכה בעצמה לחלק מתהליך הכיוונון, וכל הבדיקה מאבדת את המשמעות שלה.
איך מפרשים את התוצאות
| תרחיש | פרשנות | |---|---| | ביצועים דומים ב-In-Sample וב-Out-of-Sample | האסטרטגיה תופסת דפוס אמיתי, לא רק רעש | | ביצועים טובים משמעותית ב-In-Sample, גרועים ב-Out-of-Sample | סימן מובהק ל-Overfitting | | ביצועים גרועים בשני התקופות | האסטרטגיה עצמה לא עובדת — לא בעיית כיוונון | | ביצועים טובים יותר דווקא ב-Out-of-Sample | ייתכן ותנאי שוק שונים בתקופה זו — כדאי לבדוק על יותר תקופות |
מגבלה חשובה
Out-of-Sample Testing הוא חלוקה חד-פעמית — בדיקה בודדת. זה טוב יותר מכלום, אבל עדיין משאיר סיכון שהחלוקה הספציפית שנבחרה "התאימה במקרה". הגרסה המתקדמת יותר, Walk-Forward Testing, חוזרת על התהליך הזה עשרות פעמים על חלונות זמן נעים, ונותנת תמונה סטטיסטית עשירה ואמינה יותר.
שאלות נפוצות
כמה נתונים צריך להקצות ל-Out-of-Sample?
חלוקה נפוצה היא 70-80% In-Sample ו-20-30% Out-of-Sample, אבל חשוב שתקופת ה-Out-of-Sample עדיין תכלול מספיק עסקאות (50+) כדי שהתוצאה תהיה משמעותית סטטיסטית — לא רק אחוז קבוע מהזמן.
מה עושים אם התוצאות ב-Out-of-Sample גרועות?
חוזרים לשלב הגדרת האסטרטגיה, לא "מתקנים" את הפרמטרים על סמך מה שראו ב-Out-of-Sample (זה בדיוק מה שהופך אותו לחסר משמעות). לרוב עדיף לפשט את האסטרטגיה או לבחור נתוני In-Sample עדכניים יותר ולבדוק שוב מההתחלה.
האם Out-of-Sample Testing מחליף Paper Trading?
לא. שניהם חשובים ומשלימים. Out-of-Sample בודק עמידות מול Overfitting על נתונים היסטוריים. Paper Trading בודק ביצוע בזמן אמת עם תנאים שבקטסט לא מדמה, כמו Slippage ועיכובי API.
מה הקשר בין Out-of-Sample ל-Look-ahead Bias?
הם בעיות נפרדות. Look-ahead Bias הוא שימוש שגוי במידע שלא היה זמין בזמן אמת. Out-of-Sample Testing מטפל בבעיה אחרת — כיוונון יתר לנתונים שכן היו זמינים באופן לגיטימי. חשוב לבדוק את שתיהן בנפרד.