פיתוח אלגוריתם לחישוב דינמי של גודל פוזיציה
כאשר אתם מתמודדים עם העובדה ש-lot קבוע באסטרטגיית מסחר מניב תוצאות לא יציבות: הסיכונים מזנקים בתקופות של תנודתיות גבוהה, ואתם מפסידים רווחים כאשר התנודתיות נמוכה. בפועל, סוחרים מאבדים עד 40% מההון שלהם עקב חישוב גודל פוזיציה לא נכון. אנו פותרים בעיה זו באופן אלגוריתמי—על ידי פיתוח חישוב דינמי של גודל הפוזיציה שמתאים עצמו לתנאי השוק ולמצב התיק. זה מבוסס על שיטות מתמטיות שהוכחו בייצור על פני אלפי עסקאות. הפחתת הסיכון יכולה לחסוך עד 30% בהשוואה לגודל lot קבוע. צרו קשר להערכה ראשונית של המשימה שלכם.
כיצד האלגוריתם לחישוב דינמי של גודל פוזיציה פותר את בעיית חוסר היציבות
אין לבלבל זאת עם שינוי ידני של גודל ה-lot—האלגוריתם עצמו מחשב את הגודל האופטימלי לכל כניסה. אנו מתחשבים בסיכון לכל עסקה (בדרך כלל 1–2% מההון), בתנודתיות הנוכחית באמצעות ATR, ב-drawdown של התיק, ובמתאם עם פוזיציות פתוחות. הגודל הסופי הוא שילוב של מספר מסננים.
Fixed Fractional (בהשראת Kelly)
הגישה הבסיסית: סיכון אחוז קבוע מההון בכל עסקה.
def fixed_fractional_size(capital, risk_pct, entry_price, stop_price):
risk_amount = capital * risk_pct
risk_per_unit = abs(entry_price - stop_price)
qty = risk_amount / risk_per_unit
return qtyrisk_pct סטנדרטי: 1–2% לעסקה. לאחר 20 עסקאות מפסידות רצופות: הפסד = (0.98)^20 = 33% מההון. ניתן לניהול.
חישוב מותאם תנודתיות
גודל הפוזיציה פרופורציונלי הפוך לתנודתיות: ככל שהשוק תנודתי יותר, כך הפוזיציה קטנה יותר.
def volatility_adjusted_size(capital, target_risk_pct, atr, entry_price, atr_multiplier=2.0):
risk_amount = capital * target_risk_pct
stop_distance = atr * atr_multiplier # стоп на 2×ATR
position_value = risk_amount / (stop_distance / entry_price)
return position_value / entry_price # в единицах актива
כאשר ATR = 3% → stop של 6% → פוזיציה X. כאשר ATR = 1% → stop של 2% → פוזיציה 3X. תוצאה: סיכון כספי שווה ברמות תנודתיות שונות.
קריטריון Kelly
גודל הפוזיציה האופטימלי מבחינה מתמטית למקסום צמיחת ההון לטווח ארוך, תואר לראשונה על ידי ג'ון קלי ב-1956:
Kelly % = W - (1-W)/R где W = win rate, R = средний win/средний loss עם W=55%, R=1.5: Kelly = 0.55 - 0.45/1.5 = 0.25 = 25% מההון. זה אגרסיבי מדי. בדרך כלל משתמשים ב-חצי Kelly (12.5%) או רבע Kelly. Kelly מלא מוביל ל-drawdowns גדולים למרות האופטימליות התיאורטית.
קנה מידה מבוסס drawdown
ככל שמתקרבים ל-drawdown המקסימלי, אנו מקטינים את גדלי הפוזיציות:
def drawdown_scaled_size(base_size, current_equity, peak_equity, max_drawdown=0.20):
current_dd = (peak_equity - current_equity) / peak_equity
if current_dd > max_drawdown * 0.75:
# При 75% от max drawdown — снижаем до 50% размера
return base_size * 0.5
elif current_dd > max_drawdown * 0.5:
# При 50% от max drawdown — снижаем до 75% размера
return base_size * 0.75
return base_size
התאמת מתאם
אם התיק כבר מחזיק מספר פוזיציות מתואמות, הוספת פוזיציה חדשה מספקת פחות פיזור. גודל הפוזיציה החדשה מוקטן באופן פרופורציונלי למתאם:
def correlation_adjusted_size(base_size, correlation_with_portfolio):
# Если корреляция 0.8 — уменьшаем размер до 20% от базового
diversity_factor = 1 - abs(correlation_with_portfolio)
return base_size * max(diversity_factor, 0.2) # минимум 20% מדוע שילוב שיטות נותן את התוצאה הטובה ביותר
אף שיטה אחת אינה מושלמת. Fixed Fractional אינו מתאים עצמו לתנודתיות, Kelly אגרסיבי, ו-Volatility-adjusted תלוי בדיוק של ATR. גישה היברידית משלבת חוזקות: הסיכון הבסיסי נלקח מ-Fixed Fractional, ולאחר מכן מותאם לתנודתיות, ל-drawdown ולמתאם. בבדיקות שלנו, ההיברידית מפחיתה את ה-drawdown המקסימלי פי 2 בהשוואה ל-Fixed Fractional טהור תוך שמירה על אותן תשואות.
| שיטה | בסיס חישוב | יתרונות | חסרונות |
|---|---|---|---|
| Fixed Fractional | אחוז מההון | פשוט, סיכון צפוי | לא מתחשב בתנודתיות |
| מותאם תנודתיות | ATR, stop | מתאים עצמו לתנאי השוק | תלוי בדיוק של ATR |
| קריטריון Kelly | אחוז זכייה, R:R | צמיחה אופטימלית תיאורטית | אגרסיבי, דורש הערכות מדויקות |
| מבוסס drawdown | drawdown נוכחי | שולט בהפסד המקסימלי | תגובה איטית לירידות חדות |
| מותאם מתאם | מתאם פוזיציות | משפר פיזור | חישוב מורכב בזמן אמת |
כיצד אנו מיישמים את האלגוריתם
המחסנית שלנו: Python (NumPy, Pandas לבדיקות חוזרות) + אינטגרציה דרך REST API של הפלטפורמה שלכם (MetaTrader, Binance, Bybit, Custom). התצורה גמישה: ניתן להפעיל/לכבות כל מודול. הקוד עובר בדיקות דליפות (ניתוח סטטי של Python).
דוגמה: חישוב היברידי
נניח שסוחר משתמש ב-Fixed Fractional עם סיכון של 1.5% ו-Kelly בבדיקה חוזרת מציע 20%. אנו משלבים: סיכון בסיס = 1.5% * 0.5 (חצי Kelly) = 0.75%, ולאחר מכן מתאימים לתנודתיות: אם ATR = 2%, stop של 4% → פוזיציה = 0.75% / (4%/מחיר נוכחי). הפלט הוא מודול יחיד עם API אחיד: def fixed_fractional_size(capital, risk_pct, entry_price, stop_price): risk_amount = capital * risk_pct risk_per_unit = abs(entry_price - stop_price) qty = risk_amount / risk_per_unit return qty . קבלו ייעוץ על יישום היברידי כזה עבור האסטרטגיה שלכם.
טעויות נפוצות בבחירת שיטה
| טעות | תוצאה | פתרון |
|---|---|---|
| שימוש רק ב-Kelly | פיצוץ במהלך drawdown | הוספת קנה מידה מבוסס drawdown |
| התעלמות ממתאם | סיכון מופרז בנכסים דומים | הפעלת התאמת מתאם |
| סיכון קבוע לעסקה | עומס יתר בתנודתיות גבוהה | הוספת חישוב מותאם תנודתיות |
| ללא בדיקות חוזרות | התנהגות בלתי צפויה | בדיקה היסטורית חובה |
סקירת תהליך
- אנליטיקה — אנו לומדים את האסטרטגיה שלכם, היסטוריית המסחר, פרמטרי הסיכון.
- עיצוב — בחירת שילוב שיטות, כתיבת מפרט.
- יישום — פיתוח מודול ב-Python או Solidity/Rust.
- בדיקות — בדיקה חוזרת על היסטוריה + בדיקה קדימה, התאמת פרמטרים.
- פריסה — אינטגרציה עם הפלטפורמה שלכם, תיעוד, הדרכה.
מה כלול
- קוד מקור של מודול החישוב (Python או Solidity).
- קובץ תצורה עם פרמטרים.
- תיעוד לאינטגרציה ותצורה.
- גישה למאגר Git פרטי.
- שבועיים של תמיכה לאחר המסירה.
לוח זמנים והערכה
זמן פיתוח: בין 2 ל-4 שבועות, תלוי במורכבות שילוב השיטות. כדי לקבל הערכה לפרויקט שלכם, צרו קשר לניתוח חינמי של האסטרטגיה שלכם והגישה המוצעת.







