אסטרטגיות
ETH חזרה לממוצע של בסיס חוזים תמידיים בין בורסות (Hyperliquid מול Binance, 4H, לונג-שורט)
תוצאה: ננטש
EthCrossVenuePerpBasisMeanReversionLS4H
סיכום תוצאה
האסטרטגיה כוונה לנתחים שאינם מיוצגים דיים של Hyperliquid, מסחר בין בורסות ולונג-שורט באמצעות עסקת בסיס ניטרלית לשוק על ETH בין Hyperliquid ל-Binance, שדועכת פערים בציון z הגדולים מ-2.0 בציפייה להתכנסות מחדש. מבחינה מכנית היא פעלה ללא דופי — 446 עסקאות תקינות וניטרליות לשוק, בטא קרובה לאפס וללא באגים — אך הפסידה בכל חודש פרט לאחד ובכל שלוש השנים, עם שארפ -9.85 ותשואה כוללת -24.9%, כשהעמלות אכלו 10.1% מהברוטו. סקירת הבקטסט של האנליסט קבעה שההפסד מובנה: עסקה הלוך ושוב בשתי בורסות דורשת ארבעה מילויים ועולה 0.2–0.4%, יותר מהסכום שאליו בסיס ETH בן כמה נקודות בסיס מתכנס אי פעם; לכן הרחבת סף הכניסה רק מצמצמת עסקאות ואינה יוצרת יתרון. האסטרטגיה ננטשה בשלב הסינון שלפני האופטימיזציה, לאחר 5 איטרציות, משום שהמנגנון נשלט מבנית בידי עמלות ולא כדאי לבצע בו אופטימיזציה.
השערה
תיקון איטרציה -5 (leverage_set_but_unused). השער סורק את קוד האסטרטגיה השמור כדי לאתר הפניה למינוף (config.leverage / self._lev / .leverage), ודוחה כאשר מוגדר מינוף>1 אך הוא חסר בקוד. שילבתי את המינוף באופן חד-משמעי בחישוב גודל הפוזיציה: position_size() קוראת כעת ישירות את `leverage = float(self.config.leverage)` ומחשבת `notional = equity * exposure_frac * leverage`, וגם הרגל המקבילה ב-Hyperliquid משתמשת באותו ערך נקוב המותאם למינוף — כך שמינוף 2x מכפיל את הערך הנקוב של שתי הרגליים (השפעה ממשית על דרישת הביטחונות, לא השפעה חסרת משמעות). זהו השינוי הקטן ביותר שעומד בדרישת השער תוך שמירה על כל לוגיקת האיתות שעברה קודם (ציון z של המרווח, כניסה ויציאה, ניהול אטומי של שתי הרגליים) ועל הייבואים. מינוף 2.0 מתאים כאן משום שהפוזיציה ניטרלית לשוק (לונג ושורט בערך נקוב שווה), ולכן 2x לכל רגל שומר על הסיכון הכיווני קרוב לאפס ובמקביל מעניק ליתרון הבסיס משמעות כלכלית.
מימוש
חזרה לממוצע של בסיס ניטרלי לשוק בחוזים תמידיים על ETH בין ETHUSDT.BINANCE (ראשית) ל-ETHUSD.HYPERLIQUID (רגל נוספת), בנרות של 4H. מרווח האחוזים (HL-BIN)/BIN מחושב כציון z בחלון מתגלגל של 60 נרות; כאשר |z|>2.0, האסטרטגיה קונה בלונג בבורסה הזולה יותר ומוכרת בשורט ביקרה יותר, בערך נקוב שווה. שתי הרגליים נסגרות עם ההתכנסות מחדש (|z|<0.3) או לאחר עצירת זמן של 4 נרות (16h). הערך הנקוב לכל רגל = הון עצמי * exposure_frac * מינוף, לכן המינוף המוגדר 2x אכן מכפיל את החשיפה ברוטו.
תוצאות אימות
האימות נכשל (leverage_set_but_unused): התצורה מגדירה מינוף=2.0, אך האסטרטגיה אינה מתייחסת למינוף בחישוב גודל הפוזיציה. יש לקבוע את גודל הפוזיציות לפיו — ערך נקוב = הון עצמי * שיעור * מינוף / מחיר (לקרוא את self.config.leverage) — או להגדיר מינוף=1.0. במצב הנוכחי המינוף אינו משפיע והבקטסט זהה ל-1x.
סקירת בדיקה היסטורית
- שארפ
- -9.85
- תשואה כוללת
- -24.94%
- ירידה מרבית
- 27.95%
- סה"כ עסקאות
- 446
- אחוז הצלחה
- 48.4%
- מקדם רווח
- 0.91
האסטרטגיה תקינה מבחינה מכנית ופועלת כראוי: 446 עסקאות ניטרליות לשוק, SyncedBuffer מסונכרן לפי חותמות זמן, בטא נמוכה באמת (0.002) ומתאם למדד הייחוס (0.03), ללא חיסול או באג
מכוונת כמתוכנן לנתחים שאינם מיוצגים דיים של Hyperliquid, מסחר בין בורסות ולונג-שורט
הפסד מבני עקבי: שארפ -9.85, סורטינו -13.8, profit_factor 0.908, אומגה 0.097, תוחלת של -$103 לעסקה, total_return -24.9% — כל החודשים שליליים פרט לאחד, וכל שלוש השנים שליליות
נשלט על ידי עמלות: עסקת ארביטראז׳ בסיס הלוך ושוב בין זירות משלמת על 4 ביצועי טייקר (פתיחה+סגירה בשתי הרגליים, ב-Binance וב-HL); העמלה היא 10.1% מהברוטו (45.9 אלף דולר עמלה + 23.4 אלף דולר השפעה), והבסיס של כמה נקודות בסיס בין ETH ל-HL-Binance אינו יכול לכסות את רצפת העלות
בחירה במרווחים העליונים כבר נכשלת: בסף entry_z>2, שיעור ההצלחה הוא 48.4% עם avg_win ~ avg_loss — הפערים הגדולים ביותר אינם מתכנסים באופן רווחי באופן אמין, ולכן העלאת הסף אינה יכולה לייצר יתרון
אין באג בקוד ואין אסטרטגיה מקבילה מקודמת בין בורסות — היתרון השלילי מובנה במנגנון, ולא נובע משגיאת מימוש שניתן לתקן
ניתוח
היסטוריית איטרציות
האימות נכשל (שכבה 2 — תרחישים סינתטיים): פרמטרים בשימוש: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars'] יש לוודא ש-__init__ מגדיר את כל המאפיינים באמצעות self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - zero_volume: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - price_gap: TypeError: FactoryStrategy._bar_ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000)
האימות נכשל (שכבה 2 — תרחישים סינתטיים): פרמטרים בשימוש: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars'] יש לוודא ש-__init__ מגדיר את כל המאפיינים באמצעות self.parameters.get(). - steady_uptrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - steady_downtrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - flat_ranging: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - volatility_spike: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - zero_volume: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000) - price_gap: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() מקבלת 1 ארגומנטים מיקומיים אך הועברו 2 (חותמת זמן של נר: 1735689600000)
סיכום תוצאה
חזרה לממוצע של בסיס חוזים תמידיים בין בורסות בנכס מרכזי ונזיל מוגבלת בידי עמלות: עסקה הלוך ושוב בשתי בורסות דורשת ארבעה מילויים, ועולה יותר מהסכום שאליו המרווח בן ספרת נקודות בסיס יחידה מתכנס. העלאת סף z אינה יכולה לייצר יתרון שהמנגנון חסר מבחינה מבנית.
סקירת הבקטסט של האנליסט לפני האופטימיזציה קבעה שיש לנטוש את האסטרטגיה, והעריכה שהיתרון השלילי מבני ואינו נובע מבאג בקוד — עסקה הלוך ושוב בשתי בורסות משלמת ארבעה מילויי טייקר, עם רצפת עלות של ~0.2–0.4%, שעולה על מרווח ETH בין הבורסות, בן כמה נקודות בסיס; לכן האסטרטגיה נעצרה לפני שלב האופטימיזציה בן 3 השלבים.
ארביטראז׳ בסיס ניטרלי לשוק בלונג-שורט, שחישב ציון z למרווח מחיר החוזים התמידיים על ETH בין Hyperliquid ל-Binance USD-M, וכאשר |z| > 2.0, קנה בלונג בבורסה הזולה ומכר בשורט ביקרה, בציפייה שהפער של 0.2–0.8% יתכנס מחדש בתוך 1–3 נרות של ארבע שעות.
האסטרטגיה פעלה כראוי וניטרלית לשוק (בטא 0.002, מתאם למדד הייחוס 0.03) לאורך 446 עסקאות, אך הפסידה בהתמדה: תשואה כוללת -24.9%, שארפ -9.85, סורטינו -13.8, גורם רווח 0.908, תוחלת של -$103 לעסקה, שיעור הצלחה 48.4% עם avg_win ≈ avg_loss, ועמלות בגובה 10.1% מהברוטו ($45.9k עמלות ועוד $23.4k השפעה).
Stratmill הוא כלי למחקר ולמסחר נייר (Paper Trading), ואינו ייעוץ פיננסי או ברוקר. תוצאות בדיקה לאחור ומסחר נייר הן היפותטיות. מסחר טומן בחובו סיכון להפסד.