פיתוח מערכת מסחר מדומה לבדיקת אסטרטגיות בינה מלאכותית

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מדוע אסטרטגיה נשברת ללא מסחר על נייר

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

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

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

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

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

מה נותן מסחר על נייר: אפקטים מדידים

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

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

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

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

בנפרד נשלטת צפיות הביצוע: המודל מושווה לעסקאות בפועל, ופער מעל סף נתון עוצר את העברת האסטרטגיה למצב קרבי. כך כשל נמצא במתאר הבדיקה — לפני שהוא עולה פוזיציה אמיתית.

סימולציה, הקלטת זרימה, חשבון דמו: השוואת מצבים

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

מצב מתי מתאים היכן נתקע
סימולציית מסחר על היסטוריה בדיקה ראשונה של השערה, מעבר על פרמטרים, סינון אסטרטגיות חלשות מראש העסקה תמיד עוברת במחיר הנר: החלקה, תור וביצועים חלקיים אינם מדומים
הקלטת זרימת מחירים יש צורך לשחזר אותו יום שוק פעמים רבות — ניפוי לוגיקת הביצוע והשוואה לאחר תיקונים מוקלט רק מה שנכנס למנוי: עומק ספר ההזמנות ואירועים מחוץ לזרימה אין ממה לשחזר
חשבון דמו של ברוקר בדיקה סופית לפני חשבון קרבי: שוק חי, השהיות אמת, סירובים בגלל מרג'ין הכללים ורשימת הכלים הזמינים שונים מחשבון העבודה, היסטוריית העסקאות מוגבלת לתוחלת חיי הדמו

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

שלבי הטמעה: מביקורת אסטרטגיה ועד מסירת המתאר

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

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

מה מוסרים לידיים: קונפיגורציות, תרשימים, נהלים

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

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

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

מקרה בוחן: פער בין תוצאות בדיקה לתוצאות אמת

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

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

הפער בין תשואת הבדיקה לתשואת האמת הגיע ל-30–40%, ולפי מספר זה אי אפשר היה להבין היכן נגמרת האסטרטגיה ומתחילה שגיאת המודל.

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

לאחר כמה איטרציות כיול המדדים התכנסו. שיעור ההזמנות שבוצעו בבדיקה ירד מ-100% (כך הונח במודל) ל-87%, במתאר הקרבי — 86%; פער התשואה הצטמצם מ-30–40% ל-4–6%; הירידה המקסימלית בהרצת הבדיקה הפסיקה להיות אופטימית — 18% לעומת 12% במודל הישן.

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

במה מתאר בדיקה שונה מחשבון דמו של ברוקר?

חשבון דמו של ברוקר (למשל, Interactive Brokers) — זה חלון ראווה של ביצוע, לא מודל שוק. זרימת המחירים בו מוחלקת: הזמנה לנפח גדול עוברת כולה במחיר האחרון, גם אם ברמה זו מונח בפועל הרבה פחות.

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

ההבדל בא לידי ביטוי בשלושה דברים. עומק הנזילות קובע כמה נפח זמין במחיר בלי להזיז אותו. ביצוע חלקי של הזמנה מפצל פקודה אחת לעשרות עסקאות במחירים ועמלות שונים. תור «מחיר — זמן» קובע מי יקבל את הנפח הנגדי ראשון.

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

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

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

חששות טכניים לפני הפעלת מתאר בדיקה

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

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

האם נדרשות הרשאות אמת לחשבון ברוקר?

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

מה לעשות עם אסטרטגיה שכבר עובדת?

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

איך המתאר שורד ניתוקים בזרימת הנתונים?

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

נדון במשימה: נתאים מצב בדיקה לאסטרטגיה שלכם

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

מה כדאי לשלוח לדיון במשימה:

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

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