פיתוח פלטפורמת בקטסטינג לאסטרטגיות מסחר מבוססות AI

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

תחומי פיתוח AI

שאלות נפוצות

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

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

מדוע בקטסטינג של אסטרטגיות AI נשבר על נתונים אמיתיים

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

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

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

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

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

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

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

זמן של הרצה אחת

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

יכולת חזרה של התוצאות

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

מהירות בדיקת ההשערות

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

כשלים שהוסרו ולמידת יתר

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

השוואת מצבי בקטסטינג של אסטרטגיות AI: טבלת בחירה

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

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

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

כיצד אנו בונים את הפלטפורמה: שלבי עבודת ההנדסה

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

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

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

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

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

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

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

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

לפני: סקריפטים מפוזרים

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

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

אחרי: קו חישוב אחיד

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

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

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

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

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

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

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

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

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

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

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

ספקות טכניים של המהנדסים לפני ההתחלה

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

להלן תשובות קצרות להתנגדויות טכניות שעולות לרוב בשלב ההערכה.

האם יהיה צורך לנקות את ההיסטוריה ידנית?

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

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

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

כיצד מתחברים מקורות בורסה וברוקר?

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

כיצד אתם מוודאים שהחישוב נכון?

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

נדון במשימה ונחזור עם הערכה ותוכנית

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

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

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