יום רביעי, 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