החלקה ועלויות ביצוע במסחר בחוזים עתידיים
מה זו החלקה (slippage), איך spread, נזילות, חדשות ו-latency משפיעים על המחיר שבפועל מקבלים, ואיך למדוד ולצמצם עלויות ביצוע ביומן שלכם.
כל מי שעבר מ-backtest למסחר אמיתי מכיר את הרגע הזה: האסטרטגיה הייתה אמורה להיכנס במחיר אחד, וה-fill הגיע במחיר אחר. ההפרש הזה, יחד עם עמלות ודמי בורסה, הוא עלות הביצוע, והוא אחד הגורמים השקטים ביותר שמכרסמים בתוצאות. במאמר הזה נפרק את הרכיבים של עלות הביצוע, נראה איך למדוד אותם, ומה אפשר לעשות כדי לצמצם אותם.
מה זו החלקה (slippage)
החלקה היא ההפרש בין המחיר שציפיתם לקבל לבין המחיר שבו הפקודה בוצעה בפועל. אם אסטרטגיה שולחת פקודת קנייה כש-NQ נסחר ב-20,000.00 וה-fill מגיע ב-20,000.75, ההחלקה היא שלושה ticks לרעתכם. החלקה יכולה להיות גם לטובתכם, אבל בפקודות שוק בתנאי תנועה מהירה היא נוטה להיות שלילית.
חשוב להבין שהחלקה איננה "תקלה". היא תוצאה טבעית של האופן שבו ספר הפקודות עובד: בכל רמת מחיר יש כמות מוגבלת של חוזים. כשאתם דורשים ביצוע מיידי, אתם לוקחים את מה שזמין, ואם הכמות ברמה הראשונה לא מספיקה או שהמחיר זז לפני שהפקודה הגיעה, תקבלו מחיר אחר.
סוגי פקודות והשפעתם על הביצוע
סוג הפקודה הוא ההחלטה הראשונה שקובעת כמה החלקה תספגו.
- פקודת שוק (market): מבטיחה ביצוע, לא מבטיחה מחיר. מתאימה כשחשוב להיכנס או לצאת מיד, אבל חשופה לכל ההחלקה האפשרית.
- פקודת לימיט (limit): מבטיחה מחיר או טוב יותר, לא מבטיחה ביצוע. אין החלקה שלילית, אבל יש סיכון שהמחיר ייגע ויברח בלי שתתמלאו, או שתתמלאו רק חלקית.
- פקודת סטופ (stop): הופכת לפקודת שוק כשהמחיר נוגע ברמה. לכן סטופ-לוס בזמן תנועה חדה יכול להתבצע רחוק מהרמה שהגדרתם.
- סטופ-לימיט (stop-limit): מגבילה את מחיר הביצוע אחרי ההפעלה, אבל במקרה קיצון עלולה לא להתבצע בכלל, וזה מסוכן במיוחד ביציאה מפוזיציה מפסידה.
אין סוג פקודה "נכון" אחד. אסטרטגיה שנכנסת בפריצה לרוב צריכה ודאות ביצוע, בעוד שאסטרטגיה שנכנסת בחזרה לרמה יכולה לעבוד עם לימיט. ההחלטה צריכה להיות מודעת ומתועדת, לא ברירת מחדל.
ה-spread, הנזילות וההשפעה על השוק
ה-bid-ask spread הוא ההפרש בין המחיר הגבוה ביותר שקונה מוכן לשלם לבין הנמוך ביותר שמוכר מוכן לקבל. בחוזים נזילים כמו ES או NQ בשעות המסחר העיקריות ה-spread הוא לרוב tick אחד, אבל בשעות הלילה, סביב פתיחת השוק או בחוזים פחות סחירים הוא יכול להתרחב.
נזילות היא כמות החוזים הזמינה סביב המחיר הנוכחי. ככל שהפקודה שלכם גדולה יותר ביחס לנזילות, כך היא "תאכל" יותר רמות מחיר. לכך קוראים market impact. לסוחר עם חוזה אחד או שניים של MNQ ההשפעה הזאת זניחה ברוב הזמן, אבל מי שמעתיק פקודות לכמה חשבונות במקביל צובר בפועל פקודה גדולה יותר, ואז זה כבר רלוונטי.
הנזילות משתנה לאורך היום. מומלץ להכיר את שעות המסחר בחוזים עתידיים ולזכור שהתנהגות השוק בשעה שלוש לפנות בוקר שונה מאוד מהתנהגותו בחצי השעה הראשונה של המסחר הרגיל.
חדשות, תנודתיות ו-latency
סביב פרסומי נתונים מאקרו-כלכליים, הספר יכול להתרוקן בתוך שבריר שנייה. מוכרים וקונים מושכים פקודות, ה-spread מתרחב, והמחיר קופץ כמה רמות בבת אחת. פקודת שוק או סטופ שנשלחות ברגע כזה עלולות להתבצע רחוק מאוד מהצפוי. לכן סוחרים רבים, וגם חלק מה-prop firms, נוהגים להימנע מכניסות חדשות דקות ספורות לפני ואחרי פרסומים חשובים. בדקו את הכללים של החברה שלכם במרכז העזרה הרשמי שלה.
Latency הוא הזמן שעובר מרגע שהאות נוצר ועד שהפקודה מגיעה לבורסה. בשרשרת אוטומטית יש כמה חוליות: יצירת ההתראה, שליחת ה-webhook, עיבוד הפקודה, והחיבור לברוקר. כל חוליה מוסיפה זמן, ובשוק מהיר כל אלפית שנייה היא הזדמנות למחיר לזוז. זו אחת הסיבות שיש מי שבוחרים להריץ אסטרטגיות על שרת משלהם באזור גאוגרפי קרוב לבורסה.
עמלות ודמי בורסה
מעבר להחלקה, לכל עסקה יש עלויות ישירות: עמלת ברוקר, דמי בורסה, דמי הסדרה ולעיתים דמי פלטפורמה או נתונים. אלה סכומים קטנים לחוזה, אבל אסטרטגיה שסוחרת הרבה פעמים ביום מרגישה אותם היטב. כדאי לחשב את העלות הכוללת ל-round turn (כניסה ויציאה) ולהכניס אותה לכל בדיקה היסטורית.
דוגמה היפותטית: נניח שעלות round turn כוללת היא סכום קבוע X, ואסטרטגיה מבצעת עשר עסקאות ביום. בתוך חודש מסחר של כעשרים ימים מדובר במאתיים עסקאות, כלומר 200X עלויות, עוד לפני החלקה אחת. אם הרווח הממוצע לעסקה בבדיקה ההיסטורית קרוב ל-X, האסטרטגיה בפועל עלולה להיות מאוזנת או מפסידה.
איך למדוד החלקה ביומן שלכם
אי אפשר לשפר מה שלא מודדים. הנה תהליך פשוט:
- לכל עסקה, רשמו את המחיר שהאות "התכוון" אליו: מחיר הסגירה של הנר שבו נוצר האות, או רמת הלימיט או הסטופ.
- רשמו את מחיר ה-fill בפועל מדוח הברוקר.
- חשבו את ההפרש ב-ticks, עם סימן: חיובי לטובתכם, שלילי לרעתכם.
- רשמו את השעה, סוג הפקודה, גודל הפוזיציה והאם הייתה הודעת חדשות סמוכה.
- אחרי כמה עשרות עסקאות, סכמו את ההחלקה הממוצעת לפי שעה ולפי סוג פקודה.
התוצאה תראה לכם, למשל, שהכניסות בפתיחת המסחר עולות לכם יותר מהכניסות באמצע היום, או שהסטופים מתבצעים רחוק יותר מהיציאות לרווח. זה מידע שאפשר לפעול לפיו. ואת אותו מספר כדאי להכניס חזרה לבדיקות: הסבר מורחב יש במאמר על הפער בין backtest למסחר אמיתי.
דרכים לצמצם עלויות ביצוע
- בחרו סוג פקודה מתאים לאסטרטגיה ולא רק מתוך הרגל. בדקו אם חלק מהכניסות יכולות להיות לימיט.
- הימנעו ממסחר בחלונות של נזילות נמוכה או סביב חדשות אם האסטרטגיה לא בנויה לכך.
- השתמשו בחוזי מיקרו כשצריך גודל עדין יותר, ופצלו פקודות גדולות במידת הצורך.
- קצרו את שרשרת הביצוע: פחות חוליות, פחות המתנה, ושרת יציב.
- הכניסו החלקה ועמלות לבדיקות כהנחה שמרנית, כדי שהציפיות יהיו ריאליות.
- בדקו את הנתונים באופן קבוע, כי תנאי השוק משתנים ומה שנכון היום לא בהכרח יהיה נכון בעוד חצי שנה.
נקודות מפתח
- החלקה היא חלק מובנה ממסחר, לא תקלה. היא נובעת מנזילות, מהירות השוק וסוג הפקודה.
- פקודות שוק וסטופ חשופות להחלקה; לימיט חשופה לאי-ביצוע.
- חדשות ושעות של נזילות נמוכה מגדילות את ה-spread ואת הסיכון לביצוע רחוק.
- עמלות ודמי בורסה מצטברים מהר באסטרטגיות עם הרבה עסקאות.
- מדדו החלקה ביומן לפי שעה וסוג פקודה, והחזירו את המספרים לבדיקות.
WeCore מבצעת אותות מ-TradingView או מהאסטרטגיות שלכם ישירות מול חשבון הברוקר או ה-prop firm, וניתן להריץ את המנוע גם על שרת ענן בחשבון שלכם. כדאי להתחיל במצב סימולציה ולהשוות את מחירי הביצוע לאותות לפני שעוברים לחשבון אמיתי.