אלגוריתם גודל פוזיציה מבוסס סיכון למסחר
סוחר פותח עסקה של 100,000 דולר מבלי לדעת את הסיכון המדויק. שעה לאחר מכן, השוק יורד ב-5% – הפסד של 5,000 דולר מוחק רווח של שבוע. ניהול סיכונים מקצועי פותר זאת: המערכת מחשבת אוטומטית את גודל הפוזיציה כך שבסטופ-לוס תפסידו בדיוק 1% מהתיק. לא יותר, לא פחות. גישה זו שולטת במשיכות ושומרת על ההון גם בסדרה של עסקאות מפסידות. חיסכון בניהול סיכונים יכול להסתכם במאות אלפי דולרים בשנה על ידי מניעת משיכות גדולות; עבור תיק של 1 מיליון דולר, מערכת זו יכולה לחסוך מעל 200,000 דולר בשנה. בנוסף, חיסכון בהחלקה יכול לעלות על 5,000 דולר בחודש.
אנו מפתחים מערכות כאלה כבר שנים רבות – הלקוחות מקבלים מודול Python מוכן עם קוד מקור, בדיקות ואינטגרציה. למהנדסים שלנו יש ניסיון של למעלה מ-10 שנים והם מוסמכים ב-Python ובמודלים פיננסיים. צרו קשר כדי להעריך יישום עבור המחסן הטכנולוגי שלכם.
מדוע גודל הפוזיציה קריטי וכיצד המערכת מגנה על ההון?
נפח קבוע הוא דרך לפשיטת רגל. עם סטופ של 2% ופוזיציה של 10,000 דולר, אתם מפסידים 200 דולר; עם תנודתיות של 10%, אתם מפסידים 1,000 דולר. גודל פוזיציה מבוסס סיכון פותר זאת: אתם מסכנים רק, נניח, 100 דולר ללא קשר לסטופ. המערכת בוחרת אוטומטית את הנפח, והחיסכון בהחלקה יכול להגיע לסכומים משמעותיים בחודש. גודל פוזיציה מבוסס סיכון יעיל פי 10 מגודל לוט קבוע. הוא לוקח בחשבון שלושה גורמים: אחוז הסיכון מהתיק, סטופ-לוס דינמי המבוסס על ATR, ומגבלות התיק. כל החישובים מתבצעים במילישניות – ללא עיכובי ביצוע. המערכת שלנו מובטחת ללא באגים ונבדקה ביסודיות.
כיצד מתבצעים חישובי גודל הפוזיציה?
נוסחת גודל הפוזיציה הבסיסית
Position Qty = Risk Amount / Risk Per Unit
Risk Amount = Portfolio Value × Risk Percent
Risk Per Unit = |Entry Price - Stop Loss Price| def calculate_position_size(portfolio_value, risk_pct, entry_price, stop_price):
risk_amount = portfolio_value * risk_pct
risk_per_unit = abs(entry_price - stop_price)
if risk_per_unit == 0:
raise ValueError("Stop price equals entry price")
qty = risk_amount / risk_per_unit
position_value = qty * entry_price
return {
'qty': qty,
'position_value': position_value,
'position_pct': position_value / portfolio_value,
'risk_amount': risk_amount,
'risk_pct': risk_pct
}דוגמה: תיק של 50,000 דולר, סיכון של 1% (500 דולר), כניסה ב-45,000 דולר, סטופ ב-43,200 דולר (4% מתחת). סיכון ליחידה = 1,800 דולר. כמות = 500/1800 = 0.278 BTC. ערך הפוזיציה = 12,500 דולר (25% מהתיק).
מיקום סטופ מבוסס ATR
עדיף לקבוע את גודל הסטופ על בסיס ATR (ראו ATR) במקום אחוז שרירותי:
def atr_based_sizing(portfolio_value, risk_pct, entry_price, atr, multiplier=2.0):
stop_distance = atr * multiplier
stop_price = entry_price - stop_distance # для лонга
return calculate_position_size(portfolio_value, risk_pct, entry_price, stop_price)עם ATR של 2%: סטופ = 4% מתחת לכניסה. עם ATR של 5%: סטופ = 10% מתחת. גודל הפוזיציה יורד אוטומטית בתנודתיות גבוהה.
בסיס מתמטי של ATR
ATR מחושב כממוצע נע אקספוננציאלי של הטווח האמיתי על פני 14 תקופות. טווח אמיתי = מקסימום(גבוה − נמוך, |גבוה − סגירה קודמת|, |נמוך − סגירה קודמת|).כיצד המערכת מתמודדת עם מגבלות התיק?
- מכסת גודל פוזיציה מקסימלית: גם אם חישוב הסיכון נותן פוזיציה של 50% מהתיק – אנו מגבילים אותה ל-20%.
- גודל פוזיציה מינימלי: מתחת לנפח מסוים, העמלות אינן מוצדקות. דלגו על העסקה.
- בדיקת יתרה זמינה: כספים בפועל בבורסה.
- התאמת מינוף: בעת שימוש במינוף: effective_qty = calculated_qty, אך margin_required = position_value / leverage.
עם מספר פוזיציות פתוחות, הסיכון הכולל לא יעלה על המגבלה:
def portfolio_adjusted_size(base_size, current_total_risk, max_portfolio_risk, portfolio_value):
remaining_risk_budget = max_portfolio_risk * portfolio_value - current_total_risk
if remaining_risk_budget <= 0:
return 0 # нет места в портфеле
max_new_risk = min(base_size['risk_amount'], remaining_risk_budget)
scale_factor = max_new_risk / base_size['risk_amount']
return base_size['qty'] * scale_factor שיטות ותצורה
| שיטה | יתרונות | חסרונות |
|---|---|---|
| אחוז קבוע | פשטות | לא מתחשב בתנודתיות |
| ATR | התאמה לשוק | דורש חישוב |
| תנודתיות (סטיית תקן) | בסיס סטטיסטי מוצק | מורכב יותר ליישום |
| פרמטר | תיאור | ערך לדוגמה |
|---|---|---|
| אחוז סיכון | חלק התיק בסיכון | 1% |
| מכפיל ATR | מכפיל לסטופ | 2.0 |
| מכסת פוזיציה מקסימלית | גודל פוזיציה מקסימלי | 20% |
| נפח פוזיציה מינימלי | נפח מסחר מינימלי | 0.001 BTC |
| מינוף | מינוף | 10x |
מה כלול בעבודה?
- קוד מקור ב-Python עם תיעוד.
- כיסוי בדיקות (בדיקות יחידה + אינטגרציה).
- קבצי תצורה (YAML/JSON) לכל הפרמטרים.
- אינטגרציה עם API של בורסות (Binance, Bybit, Kraken).
- מדריך פריסה והדגמת וידאו.
- תמיכה ל-30 יום לאחר המסירה.
- אנליטיקה: דיון באסטרטגיות ובמגבלות שלכם.
- עיצוב: ארכיטקטורת המודול, API, טיפול בשגיאות.
- יישום: כתיבת קוד עם ביקורת עמיתים.
- בדיקות: בדיקות יחידה, בדיקות עומס על נתונים היסטוריים.
- פריסה: אינטגרציה עם הבוט או הפלטפורמה שלכם.
לוחות זמנים – בין 3 ל-10 ימים תלוי במורכבות. העלות מחושבת באופן אישי. המחיר מתחיל ב-2,000 דולר למודול בסיסי. קבלו ייעוץ למשימה שלכם – צרו קשר.
שגיאות אופייניות בגודל פוזיציה
- התעלמות מסיכון התיק: פתיחת פוזיציה שנייה ללא התחשבות בראשונה.
- שימוש במינוף ללא התאמת גודל: עם מינוף של 10x, הסיכון גבוה באופן יחסי.
- סטופ-לוס ללא התחשבות בספרד: עבור זוגות נזילים הספרד קטן, אך על אלטקוין הוא יכול לאכול חלק מהסטופ.
המערכת האוטומטית שלנו מקצרת את זמן החישוב פי 100 בהשוואה לחישוב ידני. הזמינו יישום של מערכת גודל פוזיציה מוכוונת סיכון – צרו קשר כדי לדון בפרויקט שלכם.







