‏הצגת רשומות עם תוויות backtesting. הצג את כל הרשומות
‏הצגת רשומות עם תוויות backtesting. הצג את כל הרשומות

יום שני, 13 בפברואר 2012

אופטימיזציה - לא מה שחשבתם (חלק ב)


זהו חברים, נגמרה השביתה הגדולה, וקיבלתי מעיני אישור לפוסט חדש.

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

אז מה בכל זאת עושים?

תכירו את טכניקת ה- WFA Walk Forward Analysis. תרגום מוצלח יזכה אתכם בחופשה חלומית מתנת האקדמיה ללשון העברית (דרך אגב, הידעתם כי "אקדמיה" אינה מילה עברית?). טכניקת ה-WFA  היא כלי רב עוצמה לבדיקה האם אסטרטגיה/סיסטם יכול בכלל  "לשרוד" תהליך של טיוב פרמטרים. במילים אחרות, באמצעות שימוש בטכניקה זו, ניתן לבחון האם רעיון האופטימיזציה על סיסטם, ונסיון לבחור סט אופטימלי של פרמטרים, עומד במבחן המציאות ובעל פוטנציאל רווחיות לאורך זמן.

אוקיי, מילים גבוהות. איך זה עובד בפועל?

הפרוצדורה די פשוטה. מריצים אופטימיזציה על תקופה X (in sample), ובוחנים את תוצאות האופטימיזציה על תקופה עוקבת Y (out of sample). חוזרים על התהליך מספר פעמים כאשר בכל פעם מתקדמים על ציר הזמן בתקופות X  ו-Y. כלומר לכל תקופה Y שהיא בעצם "העתיד" שלנו נכון לרגע ההרצה, מתאימים סט אופטימלי של פרמטרים שנגזר מהתקופה הקודמת לה. התהליך בעצם "צועד קדימה" על ציר הזמן, ומתאים סט פרמטרים אופטימלי לכל תקופה, וכך שומר על סוג מסויים של קורלציה עם תנאי השוק המשתנים.

להלן תיאור סכימתי של התהליך:



המלבנים הכחולים מציינים את תקופת האופטימיזציה – In sample, והמלבנים הירוקים, את תקופת "הבדיקה" של אותו סט פרמטרים אופטימלי אשר התקבל בתקופת האופטימיזציה הסמוכה לה (Out of Sample). בדוגמא זו אנו מריצים אופטימיזציה על פני 4 חודשים, ובודקים את תוצאותיה על החודש העוקב. בסופו של התהליך, מקבלים תוצאות "אמת" ריאליות של כל תקופות הבדיקה – החלק התחתון בתרשים. הרצה של תהליך WFA של פני תקופת זמן ארוכה, יכולה לספק תמונה די ברורה לגבי פוטנציאל הריווחיות של הסיסטם. אם כאשר סוכמים את רווחי הסיסטם בכל תקופות הבדיקה מתקבלת תוצאה חיובית, הרי שהסיסטם בעל פוטנציאל להרוויח בתנאי שוק משתנים. אם לעומת זאת התוחלת שלילית, הרי שבעצם לא משנה מה נעשה, וכמה אופטימיזציות נבצע – הסיסטם לא ישרוד לאורך זמן בתנאי שוק דינמיים.

ניתן לבצע WFA בצורה ידנית – להריץ אופטימיזציה ידנית על תקופה X, למצוא את סט הפרמטרים האופטימלי, לבצע הרצה שלו בתקופה עוקבת, ולחזור על התהליך הנ"ל כמה עשרות פעמים. מייגע, אך אפשרי. הפתרון הפשוט יותר, הוא להשתמש בכלים אוטומטיים הקיימים בשוק. לדוגמא, סוחרי מניות יכולים להשתמש ב- TradeStation אשר מספק מודול WFA איכותי, וסוחרי Forex ב- MT4 יכולים להשתמש בכלי מצויין העונה לשם המקורי "Walk Forward Analyzer for MetaTrader 4".

אתם בטח סקרנים לגבי הסיסטם שהצגנו בפוסט הקודם – האם הוא אכן בעל פוטנציאל לשרוד לאורך זמן? האם הוא עובר את מבחן ה-WFA בהצלחה?

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

אז קדימה - בואו ונבצע WFA על הסיסטם הנ"ל. אשתמש בכלי שהזכרתי קודם ל-MT4, כאשר תקופת האופטימיזציה תהיה חודשיים (60 יום), ותקופת הבדיקה העוקבת – 15 יום. יחס 1:4 הוא היחס המקובל ביותר לניתוח WFA. את התהליך אריץ מתחילת 2009, ועד תחילת 2012. שלוש שנים רצופות. סה"כ 69 סבבים של אופטימזציה + בדיקה.



דו"ח התוצאות נראה כך:


ניתן לראות את ארבעת סבבי ההרצה הראשונים, כאשר כל סבב מחולק לתקופת ה-Optimization ותקופת ה-Testing. לכל תקופה כזאת ניתן לראות את הרווח לאחר ההרצה. בנוסף, ניתן לראות את סט הפרמטרים האופטימלי בתקופת ה-Optimization. במקרה שלנו, ישנו פרמטר יחיד והוא תקופת הממוצע הנע.

במבט חטוף אך ורק על ארבעת הסבבים הראשונים, ניתן כבר לראות את "החולי" של אופטימיזציה עיוורת – תקופות האופטימיזציה ריווחיות מאוד, אך כאשר משתמשים בתוצאות האופטימיזציה על התקופה העוקבת, הריווחיות נמוכה בהרבה (סבב 1), אפסית (סבבים 2 ו-3), או שלילית (סבב 4).

ובשורה התחתונה?



הרצה של הסיסטם הנ"ל על פני 3 שנים הניבה רווח של 28382$ בהתחשב בתקופות האוטימיזציה בלבד. אולם בעולם האמיתי, הסיסטם כושל עם הפסד של 1359$... בקיצור, אין כמו תחושת בטן של סוחר מנוסה. זהו אולי סיסטם מצויין שניתן "למכור" בקורס ניתוח טכני למתחילים (אין כמו סיסטם כזה  אשר מוצג בשיעור מבוא לקורס כשיטה מדהימה לגריפת רווחים קלים + הוכחה ניצחת כמובן בדמות 70% רווח בשנתיים לאחר ביצוע אוטימיזציה פשוטה...), אולם במבחן המציאות, כל מי שינסה להשתמש בו לאורך זמן, יקלל את הרגע בו למד לבצע אופטימיזציה, ויאלץ למצוא מקורות מימון חדשים.

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

עד אז? תקנו בזול ותמכרו ביוקר.



-----------------------------------------------------------------------------------------------------------------------

לא רוצים לפספס את כתבת ההמשך? הירשו לבלוג וקבלו עדכון מיידי על פוסטים חדשים. ניתן לקבל עידכונים במייל, בפייסבוק, בטוויטר, או באמצעות RSS. ההרשמה באמצעות הטופס בתחילת העמוד - "Subscribe Now".


יום רביעי, 25 בינואר 2012

אופטימיזציה - לא מה שחשבתם (חלק א)

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

העצות הבאות חוזרות ונשנות כמעט בכל ספר, פורום או בלוג מסחר:
    1. הכירו את השיטה היטב, על יתרונותיה חסרונותיה ומגבלותיה
    2. בדקו את יעילות השיטה על נתונים הסטוריים – backtesting
    3. סחרו תחילה בחשבון דמו
    4. לאחר תקופת הסתגלות עברו לחשבון רגיל בחשיפה נמוכה
    5. הגדילו פוזיציה ככל שאתם צוברים נסיון


כל מילה בסלע, וכל עצה ראויה לדיון בפני עצמה. עם זאת, בפוסט זה אני רוצה להתמקד בעיצה השניה.
השאלה הנשאלת היא, איך מחליטים על פרמטרים שונים של השיטה בצורה נכונה? הרי השוק הוא דינמי, ומה שנכון היום לא בהכרח יהיה נכון עוד חודש. לדוגמא, השיטה שלכם כוללת ממוצע נע. איך תחליטו על ה-period שלו? אולי ממוצע 100 מצויין בתנאי השוק הנוכחיים, אך יתפקד בצורה גרועה בתנאי שוק אחרים? איך תחליטו מהם ה-SL וה-TP האופטימליים? 2%? 10%? איך תתאימו אם כן את הפרמטרים השונים בשיטה שלכם לתנאי השוק המשתנים תדיר?

התשובה המקובלת אותה תקבלו מרוב הסוחרים היא – אופטימיזציה. במילים פשוטות, תהליך שבודק מהם הערכים האופטימליים לפרמטרים האפשריים בשיטה, על סמך נתונים הסטוריים. בעצם, תהליך אופטימיזציה מתבצע ע"י הרצות backtesting רבות, עם שילובים של ערכים שונים. brute force. פשוט מנסים. בדוגמא הקודמת, מריצים שילובים של ערכי SL, TP, ו-period לממוצע הנע, ובודקים איזה שילוב נותן את התוצאה הטובה ביותר על פני תקופה מוגדרת. במאמר מוסגר, "תוצאה טובה" לא מתמצת בהכרח אך ורק ברווח. פרמטרים שונים נוספים יכולים להשפיע על מידה "האופטימליות" של התוצאה. למשל drawdown, profit factor, או מספר טריידים לתקופת זמן.


עם זאת, סוחרים רבים אינם מודעים לעובדה, כי תהליך אופטימיזציה הוא תהליך מסוכן ומטעה. כאשר מבצעים אופטימיזציה בצורה פשוטה, בעצם "מתאימים" את השיטה לנתוני עבר, אך מתעלמים לחלוטין משינויים עתידיים בדינמיקה של השוק. ניקח שוב את הדוגמא הקודמת. נניח שבתהליך האופטימיזציה בדקנו ערכי ממוצע נע בין 20 ל-100, וקיבלנו ממוצע נע אופטימלי של 53 יום שהפיק את הרווח הגבוה ביותר בתקופת הבדיקה. כל שאר הממוצעים שנבדקו הניבו רווחים זעומים או הפסדים גדולים. אושר גדול? ממש לא. סביר להניח ששימוש עוור בממוצע 53 בעתיד, ותשארו עם המכנסיים למטה. 

אבל למה להניח הנחות? בואו נבנה סיסטם אמיתי, בסיסי ופשוט ביותר, ונראה במו עינינו מה קורה בשטח.


להלן הסיסטם:

כניסה לפוזיצית לונג (ויציאה מפוזיצית שורט קודמת) – כאשר המחיר חוצה את ממוצע נע 25 מלמטה למעלה.
כניסה לפוזיצית שורט (ויציאה מפוזיצית לונג קודמת) - כאשר המחיר חוצה את ממוצע נע 25 מלמעלה מלטה.
מגבלות והנחות:

     -  פוזיציה אחת פתוחה בו זמנית.
     -  הרצה על גרף יומי (את הפוסט הראשון בבלוג כבר קראתם?)
     -  בדיקת המחיר תתבצע על מחיר הפתיחה בלבד (אין מסחר תוך יומי)
     -  גודל פוזיציה קבוע – 1 לוט (סוחרי מניות מוזמנים לעשות אדפטציה לעולם שלהם)

לדוגמא:


Backtesting של הסיסטם הנ"ל על תקופה של שנתיים, בין 2008 ל-2010, עם ממוצע נע 25 יום, מראה כי הסיסטם הניב רווח של 51%. לא רע.




עכשיו, בואו נריץ אופטימיזציה (אותה תקופת זמן) על פרמטר אחד – הממוצע הנע. נסרוק את כל הערכים האפשריים בין 20 ל-100, בקפיצות של 5. 

להלן התוצאות:



ניתן לראות כי הממוצע הנע האופטימלי הוא של 55 יום, בו מתקבל רווח של 73% לתקופה של שנתיים. 22% יותר מהערך השרירותי הראשוני שקבענו של 25 יום. 



מלא התרגשות מהתוצאה הנפלאה, אץ לו רץ לו הסוחר הנרגש, הכניס 100000 דולר לחשבון הברוקר שלו, וסחר עם אותו סיסטם על ממוצע 55, מתחילת שנת 2010 עד היום. להלן התוצאה:



הפסד של 37%... אם נריץ את אותה אופטימיזציה שהרצנו קודם, והפעם על 2010 ועד היום, נראה כי הערך האופטימלי לממוצע הנע הפך פתאום ל-35. הוא שאמרנו – השוק דינמי. הסתמכות עיוורת על אופטימיזציה משקרת ומטעה.

אז מה בכל זאת עושים? התשובה בפוסט הבא...


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


ShareThis