פיתוח מערכת חוזים עתידיים: היכן נשברת ליבת המסחר
בורסת חוזים עתידיים נשענת על ליבת המסחר: ספר פקודות, התאמה, חישוב מחדש של המרג'ין ופירוק פוזיציות — מודולים משולבים, וחוסר סנכרון ביניהם נראה לא מיד.
פיתוח מערכת חוזים עתידיים בדרך כלל נכשל לא בממשק, אלא כאן: חלק מהעסקאות נרשמות בספר הפקודות אך אינן משתקפות בפוזיציה של המשתמש, ההתאמה מצביעה על פער, וצריך לסגור אותו ידנית, כבר במסחר חי.
לראשונה הפער מתגלה בעומס שיא. בתנועת מחיר חדה זרם הפקודות והביטולים גדל פי כמה, תור העיבוד מתארך, וחישוב המרג'ין מחדש אינו מדביק את השוק. הסוחר רואה ערך פוזיציה אחד, המערכת מחזיקה בחישוב ערך אחר — וההחלטה על פירוק מתקבלת לפי מחיר שכבר אינו קיים.
מכאן מפולת פירוקים: המנוע מחסל פוזיציות ברצף לפי העסקה האחרונה, בלי להשוות לעומק הספר ובלי להתחשב בכך שחלק מהסגירות עצמן מזיזות את המחיר. הקסקדה שואבת גם משתתפים סולבנטיים, וקרן הביטוח אינה מכסה את הפער.
במקביל נתקע משיכת הכספים — התור אינו מתפנה, כי היתרות של החשבונאות החמה והקרה נפרדו ואין להן נקודת התאמה חד-משמעית.
כל הכשלים הללו הם תכנוניים ולא מקריים: הם מונחים ברגע בחירת ארכיטקטורת הליבה, מודל המרג'ין וסדר עיבוד הפקודות. בהמשך נבחן כיצד סוגרים זאת — מתרשים החשבונאות ועד להתנהגות המערכת ברגע של תנודתיות שיא.
אפקט מדיד: מהירות תגובה, עמידות, עומק ספר הפקודות
האפקט ממערכת חוזים עתידיים נמדד לא בתחושות, אלא ברשימת מדדים שנמדדים לפני השחרור וחוזרים עליהם לאחר כל עדכון. כל שורה להלן היא קריטריון קבלה: קובעים את הערך בתחילת העבודה ומגנים עליו בקבלה.
- זמן תגובה — מסלול הפקודה מקליטה ועד אישור, ומהצבתה בספר ועד ביצוע. מסתכלים לא על הממוצע, אלא על זנב ההתפלגות: תגובות איטיות נדירות מעצבנות יותר מרקע אחיד.
- שיעור הפקודות הנדחות — פילוח לפי סיבות: פסק זמן, מרוץ של בדיקת מרג'ין, חוסר סנכרון יתרות. כל דחייה נרשמת ביומן, והמטרה היא מקרים בודדים במקום אחוז הפסדים קבוע.
- עומק ספר הפקודות — צפיפות פקודות לימיט בכמה רמות מהמחיר הטוב ביותר. היא גדלה כאשר אסטרטגיות עושות שוק רואות תגובה צפויה ואינן חוששות להציג נפחים גדולים.
- עמידות לעומס — התנהגות בזינוק פקודות: המערכת מדרדרת באופן מבוקר, חותכת את העודף, במקום לקרוס. בודקים בפרופיל של יום מסחר, ולא במקסימום סינתטי.
- זמן התאוששות — מהתקלה בצומת ועד חידוש המסחר והתאמת הפוזיציות. רזרבה חמה ומעבר אוטומטי מקצרים את ההפסקה לדקות.
- מחלקת כשלים שחלפה בחשבונאות — פערי יתרות, חיובים כפולים, שגיאות בזיכויים לפי ריבית המימון. פעולות אידמפוטנטיות והתאמה לאחר הסשן מסירות אותן כמחלקה.
הרשימה מציגה גם התקדמות וגם רגרסיה: ירידת מדד נראית לפני השחרור, ולא לפי תלונות הסוחרים. חיבורים חיצוניים אנו מספקים לפי תקן השוק FIX — את התגובה מודדים בערוץ הפעיל.
פורמטי מימוש: ליבה מוכנה, התאמת פקודות עצמאית, היברידי
את פורמט המימוש בוחרים לפי שני נתוני פתיחה: האם לפלטפורמה יש נזילות משלה וצוות תמיכה, וכמה נוקשות מוגדרים כללי המרג'ין והפירוק. מכך תלוי היכן עובר הגבול בין הפלטפורמה למודולים שלנו, ואילו כשלים סוגר כל צד.
להלן ארבעה וריאנטים עובדים והתנאים שבהם כל אחד מהם מפסיק להיות נוח.
| וריאנט | מתי מתאים | מגבלות |
|---|---|---|
| ליבת מסחר עצמאית | נדרש שליטה מלאה על התאמת הפקודות, ריביות המימון והפירוק, ויש צוות תמיכה משלך | לוח הזמנים ליציאה לשוק נמדד בחודשים, עמידות לתקלות והתאוששות לאחר תקלה נבנות מאפס |
| פלטפורמה ברישיון | סדרי עדיפויות — השקה מהירה ותמיכה צפויה | סוגי הפקודות, לוגיקת המרג'ין ולוחות הניהול מוגבלים על ידי הספק, והאינטגרציה עם החשבונאות הפנימית עוברת דרך מתאמים |
| סכמה היברידית | את הליבה המוכנה לוקחים כמות שהיא, ולעצמנו משאירים את קו הסיכון ואת חלון הנזילות | שני צוותים על אותו קו: דרושים גבולות נוקשים בנתונים ובחוזים, ועדכוני הליבה מחייבים רגרסיה של המודולים שלנו |
| קו סליקה חיצוני | הסליקה וחשבונאות הפוזיציות מוצאים לשירות נפרד — חשבונאות אחידה בין פלטפורמות, ביקורת שקופה | השהיה בכל חישוב, תלות בזמינות הרשת החיצונית, וקשה להבטיח פירוק מיידי |
בנפרד ראויה לציון השילוב של היברידי עם קו חיצוני: התאמת הפקודות נשארת בליבת המסחר, ואילו חישוב הפוזיציות יוצא החוצה. זה נותן גמישות בחשבונאות, אך דורש בקרת עקביות נפרדת — את הפער בין הליבה לשירות הסליקה יש לגלות בתוך שניות, ולא בזמן ההתאמה.
שלבי ההטמעה: מביקורת החשבונאות ועד הקבלה
העבודה מתנהלת ברצף, וכל שלב נסגר בארטפקט שהמזמין בודק בעצמו. הסדר בנוי כך ששגיאה בחשבונאות תצוף לפני ההשקה החיה, ולא אחרי הפירוקים הראשונים אצל הלקוחות.
- ביקורת החשבונאות. מפרקים כיצד מחושבים כיום דרישות המרג'ין, ריבית המימון, מחיר הפוזיציה הממוצע ותור הפירוק. מתעדים פערים בין התיעוד לקוד העובד.
- תרשים האינטגרציה. מתארים את הזרימות בין ליבת המסחר, מודול הסיכון והחשבונאות: היכן הציטוט הופך לפקודה, היכן מחושב מחדש הבטחון. על התרשים מסכימים לפני השורה הראשונה של הקוד.
- הגדרת המצבים. קובעים מדרגות מרג'ין, מגבלות פוזיציה, כללי פירוק חלקי ופרמטרי מכשירים. את הערכים לוקחים מהביקורת, ולא מנחשים לפי העין.
- הרצה תחת עומס. משחזרים זרם פקודות שיא ותנועת מחיר חדה. בודקים היכן גדלה השהיית העיבוד וכיצד מודול הסיכון מחזיק פירוק המוני.
- התאמת החשבונאות. מריצים נתונים היסטוריים ומשווים בטחון, תשלומים ועמלות למול אמת מידה בכל עסקה. פער הוא שגיאה בנוסחה, ולא סטייה מותרת.
- מסירה לתפעול. מוסרים קונפיגורציות, נהלים וניטור: ירידת הבטחון, מספר הפירוקים, השהיית עיבוד הפקודות. בנוסף הוראות למשמרת התורן.
ארטפקטים של המסירה: תרשימים, קונפיגורציות, נהלים
איננו סוגרים את הפרויקט במילה «מוכן» — אנו מוסרים ערכה שלפיה הצוות שלכם מתפעל את המערכת בעצמו, משנה פרמטרים ומנתח תקלות. כל הארטפקטים נכתבים עבור הקו שלכם: שמות השירותים, כתובות הצמתים, גבולות התפקידים תואמים את סביבת העבודה, ולא לדוכן הדגמה.
- תרשים הזרימות — מסלול הפקודה מהשער החיצוני ועד ספר הפקודות וחישוב הפוזיציות: היכן ממוקמים התורים, באיזה רגע נקלט המרג'ין, מה קורה בעת ניתוק החיבור למקור המחיר והיכן נוצרת ההשהיה.
- קונפיגורציות הסביבה — ערכות פרמטרים נפרדות לקו הבדיקה ולקו העבודה: מגבלות מינוף, צעד מחיר, ריביות מימון, ספי סגירה כפויה. שינויים עוברים ביקורת ונשמרים בגרסאות, והחזרה לערכה הקודמת — בפקודה אחת.
- מדיניות גישה — מטריצת תפקידים עם הפרדת תחומי אחריות: מי משנה פרמטרי סיכון, מי מוציא כספים, מי רק קורא יומנים. בסעיף נפרד — סדר רוטציית המפתחות ותקופת תוקפם.
- תיעוד — תיאור השירותים ופורמטי ההודעות, רשימת נקודות הכשל, סדר החזרת השחרור והוראות למשמרת התורן.
- נוהל אירועים — מחלקות תקלות, זמן תגובה לכל אחת, סדר ההסלמה, פעולות בעת פער יתרות והליך עצירת המסחר.
- סדר העדכונים — כיצד להעלות גרסה חדשה בלי לעצור את המסחר, מי מאשר את ההעלאה, ולפי אילו סימנים מתקבלת ההחלטה על החזרה.
הערכה נשארת אצלכם במאגר ומתעדכנת יחד עם הקוד — צוות חדש נכנס למערכת לפי התיעוד, ולא לפי סיפוריהם של אלה שכתבו אותה.
מקרה בוחן: העברת חישוב החוזים העתידיים למודל מרג'ין עצמאי
מה היה לפני המעבר
את חישוב המרג'ין הוביל ספק חיצוני: הבורסה שלחה פוזיציות וקיבלה בחזרה דרישות בטחון. בתנועות חדות התשובה הגיעה באיחור, וחלק מהפקודות נדחו עוד לפני שהגיעו לספר הפקודות — בשיאים הגיע שיעור הדחיות ל-6%.
את ההתאמה ניהלו באמצעות ייצוא נתונים: היא ארכה כ-40 דקות לאחר סגירת היום, ואת הפער גילו כבר לאחר שהוא נגע בחשבונות הלקוחות. בנפרד הפריעה מחלקת כשלים שלמה — קסקדה של סגירות כפויות: פירוק אחד גרר אחריו פוזיציות סמוכות, ולא ניתן היה לעצור את השרשרת באמצעים הרגילים.
מה עשינו ומה התקבל
החישוב הועבר אל תוך המערכת שלנו ונבנה מודל מרג'ין עצמאי: חישוב תיק לפי קבוצת מכשירים, מגבלות סיכון, חישוב מחדש בכל שינוי מחיר, ולא לפי לוח זמנים.
את הלוגיקה לקחנו מהפרקטיקה של פלטפורמות חוזים — CME מחזיקה בעקרון דומה של מרג'ין תיק — והתאמנו לנזילות ולתנודתיות של המכשירים הספציפיים של הבורסה.
הפקודות הנדחות בשיאים ירדו לפחות מ-1%: ההחלטה על הבטחון מתקבלת ברגע הבדיקה, בלי להמתין לתשובה חיצונית. זמן ההתאמה התקצר מ-40 דקות ל-4 והוא מתנהל ברצף — את הפער רואים מיד, ולא למחרת.
סגירות קסקדה כמחלקת כשלים נעלמו: לפני הפירוק המערכת מחשבת מחדש את הסיכון על פני כל התיק ומקטינה את הפוזיציה בחלקים, ולכן השרשרת אינה מופעלת.
מה עושים אם הבורסה כבר עובדת ואסור לעצור אותה?
אסור לעצור את הביצוע: כל עוד הבורסה אינה עובדת, הפוזיציות הפתוחות נשארות בלי בקרת סיכון, הפירוקים וריבית המימון אינם מחושבים, ואלה כבר הפסדים של לקוחות ולא הפסקה טכנית.
לכן קו המסחר החדש בחוזים עתידיים מוקם לצד הקו הפעיל: שניהם מקבלים את אותו זרם פקודות, אך החלטות על מרג'ין, פירוקים וחישוב מיישם רק הפעיל — הוא נשאר מקור האמת עד תום המעבר.
כל עוד הקו עובד בצל, מתנהל חישוב חוזר בצל: על היסטוריית עסקאות ועל הזרם החי המערכת החדשה מחשבת פוזיציות, מרג'ין, עמלות ומימון, והתוצאה מושווית שורה-שורה למול הנוכחית. פער אפילו בסימן אחד הוא חוסם למעבר, ולא סיבה «להשלים הגדרה אחר כך». בדרך כלל הסיבה נמצאת בעיגול מספרים, בסדר החלת הריביות או בעיבוד ביצועים חלקיים.
העברת המכשירים מתנהלת חוזה-חוזה, החל מהפחות נזילים: פותחים אותם בקו החדש, בשארה מגבלות וגודל פוזיציה מקסימלי מוקטנים. אחר כך מעבירים קבוצות לקוחות — תחילה הסוחרים בנפח קטן, אחר כך עושי השוק. כל צעד הוא חלון נפרד עם מעקב אחר פערים, השהיית תגובה ושיעור דחיות.
החזרה לקו הקודם נשארת זמינה בכל שלב: הזרם במכשיר מוחזר, הפוזיציות וההיסטוריה מסונכרנות, והלקוח אינו רואה לא קפיצת ציטוטים ולא איפוס חשבון. כך ההשבתה מצטמצמת לאפס, והסיכון שבמעבר מוחלף בסדרה של צעדים ניתנים לבדיקה.
ספקות טכניים: חשבונאות, סיכונים, אינטגרציות
לפני ההתחלה נותרות לצוות הטכני של המזמין שאלות שנפתרות לא במצגות, אלא בדוכן ובקוד. להלן חמש הנפוצות ביותר: התאמת החשבונאות, שלמות הפוזיציות הפתוחות במעבר, התנהגות בתנועות חדות, אחריות על מודל הסיכון והחיבור לקו הסליקה החיצוני.
כיצד בודקים שהתאמת החשבונאות מתכנסת?
יומן האירועים ומרשם היתרות נכתבים בנפרד, והחישוב מופעל מחדש מעת לעת לפי היומן מאפס — התוצאות מושוות למצב הנוכחי לפי סכומי ביקורת. כל פער נרשם במרשם נפרד עם חתימת זמן ומשתתף, ולא נבלע בעיגול.
מה יקרה לפוזיציות הפתוחות במעבר?
נלקח סנאפשוט של פוזיציות, פקודות ובטחונות, המערכת מועברת למצב קריאה בלבד, ואז מחושב המצב בצד הגרסה החדשה. מזהי הפקודות אידמפוטנטיים, ולכן שליחה חוזרת אינה יוצרת כפילויות, והחזרה מחזירה את הבורסה לסנאפשוט האחרון שנלקח.
כיצד מתנהג מנוע הסיכון בתנועות חדות בשוק?
בדיקות טרום-מסחר חותכות פקודות לפני שהן מגיעות לספר הפקודות, מגבלות לפי מכשיר וחשבון מחושבות מחדש בכל עדכון מחיר, וקסקדת המרג'ין מופעלת לפי ספים שנקבעו מראש. את ההתנהגות בודקים בזינוקי תנודתיות היסטוריים: חשוב לא העומס הממוצע, אלא זמן התגובה בשנייה הגרועה ביותר.
מי אחראי על מודל הסיכון והפרמטרים שלו?
הריביות, ספי המרג'ין וכללי הפירוק מתואמים עם המזמין ומוצאים לקונפיגורציה מנוהלת גרסאות — כל עריכה עוברת ביקורת ומשאירה עקבה בהיסטוריית השינויים. פרופיל הסיכון משתנה בלי לבנות מחדש את הליבה, ואת הערכים הנבחרים תמיד ניתן להשוות לגרסה מסוימת של הכללים.
כיצד בנוי קו הסליקה החיצוני והפרדת הגישה?
הסליקה, הנאמן או הבנק השותף מתחברים בקו נפרד בפרוטוקול הענפי FIX, מבודד מליבת המסחר: החלפת הנתונים מתנהלת דרך תור עם אישורים וניסיונות חוזרים.
הגישה מופרדת לפי תפקידים ומפתחות — מפעיל המרג'ין, שירות התמיכה והמשתתף החיצוני רואים רק את הנתונים שלהם ואינם יכולים לאשר פעולות של אחרים.
נדון במשימה ונחזור עם הערכה ותוכנית
כדי לחזור עם היקף העבודה ותוכנית, ולא עם ניסוחים כלליים, דרוש מינימום נתוני פתיחה על הגדרת המשימה. סדר הדיון פשוט: שולחים תיאור של הקו הנוכחי והדרישות, אנחנו שואלים שאלות הבהרה על סיכון, עומס וחשבונאות, ולאחר מכן קובעים את ההיקף ואת תוכנית השלב הראשון.
- סט מכשירים: חוזים, מינופים, מועדי פקיעה, מצב מרג'ין — מבודד או כולל בחשבון.
- לוגיקת סיכון: כיצד מחושבות ריביות המימון, ספי הפירוק, מגבלות הפוזיציה וצעד המחיר.
- עומס צפוי: מספר שיא של פקודות בשנייה, חיבורים בו-זמניים, עומק ספר הפקודות הנדרש.
- מה כבר עובד: התאמת פקודות, קופה, הפקדה ומשיכת כספים, ממשקי הבורסה, ספקי נזילות.
- חשבונאות ודיווח: חשבונות נפרדים, יומן עסקאות ופעולות, ייצוא עבור ביקורת.
- מגבלות: לוחות זמנים, הרכב הצוות בצד שלכם, הרשאות לסביבות בדיקה.
- קריטריוני קבלה: תרחישים שחייבים לעבור — זינוק פקודות, כשל בצומת, פער יתרות.
לאחר הניתוח נחזור עם רשימת המודולים, סדר ההטמעה ותוכנית השלב הראשון. בדרך כלל העבודה מתנהלת מדימוי מסחר בקו הבדיקה אל סט מוגבל של חוזים, ואחר כך אל הרשימה המלאה — כך פערים בחשבונאות המרג'ין והפירוקים נתפסים לפני היציאה לחשבונות הלקוחות.







