פיתוח מערכת לבדיקות A/B של מודלים למסחר

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

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1376
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1350
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    798
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1094
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1035
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1132

בדיקות A/B של מודלים מסחריים: היכן נשבר ההשוואה

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

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

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

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

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

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

מה נותן מעגל השוואה מבוקר של מודלים

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

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

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

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

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

פורמטים של השוואה: הרצה חיה, ריפליי, מצב צל

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

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

היכן איזה פורמט מתאים

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

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

שלבי הטמעת מעגל השוואת המודלים

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

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

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

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

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

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

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

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

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

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

מה שינינו

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

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

מה השתנה

מחזור בדיקת ההשערה התקצר מ-3–4 שבועות ל-5–7 ימים, וצוואר הבקבוק עבר מהכנת הסביבה לניסוח ההשערה עצמה. שיעור ההחזרות לאחור אחרי היציאה למסחר ירד מ-40% ל-12%: מודלים עם פיזור רחב מנופים לפני ההרצה, ולא אחרי הפסדים.

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

מה עושים אם כמה מודלים כבר עובדים על אותו חשבון?

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

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

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

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

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

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

שאלות טכניות: מובהקות, נתונים, חזרה לאחור

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

איך יודעים שהמדגם מספיק?

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

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

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

מה המשמעות של חזרה לאחור של ניסוי וכמה זמן היא אורכת?

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

איך איכות הנתונים משפיעה על התוצאה?

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

אילו עיוותים מחפשים בנפרד?

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

נדבר על המשימה: מה לשלוח להערכה

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

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

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