פיתוח מקצועי של בקטסטינג לאסטרטגיית מסחר ב-DeFi

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

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

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1376
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1350
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    796
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1088
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1034
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1130

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

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

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

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

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

מה נותן מעגל בדיקה משוחזר של השערות

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

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

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

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

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

מצבי הרצה: היסטוריה, זרימה ותרחישי לחץ

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

השוואה בין מצבי הרצה

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

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

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

שלבי הרכבת מתקן הבדיקה: מנתונים ועד לתקנון

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

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

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

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

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

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

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

כך הופך חישוב חד-פעמי לכלי שמשתמשים בו בכל שינוי באסטרטגיה.

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

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

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

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

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

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

מה שינו במעגל הבדיקה

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

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

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

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

במה שונה שחזור זורם של עסקאות מהרצה היסטורית?

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

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

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

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

ספקות טכניים לפני תחילת העבודה

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

עד כמה ניתן לסמוך על נתונים היסטוריים?

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

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

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

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

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

מה יקרה לאחר שינויים באסטרטגיה או בבריכה?

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

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

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

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

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

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