Розробка алгоритму dynamic position sizing

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка алгоритму dynamic position sizing
Середній
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка алгоритму dynamic position sizing

Dynamic position sizing — адаптація розміру кожної позиції на основі поточних ринкових умов та стану портфеля. Замість торговлі фіксованим лотом, алгоритм розраховує оптимальний розмір для кожної конкретної угоди.

Fixed Fractional (Kelly-inspired)

Базовий підхід: ризикуємо фіксованим відсотком капіталу на кожну угоду.

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

Стандартний risk_pct: 1–2% на угоду. При 20 угодах підряд з повним стопом: збиток (0.98)^20 = 33% депозиту. Управляємо.

Volatility-Adjusted Sizing

Розмір позиції обернено пропорційна волатильності: вища волатильність → менша позиція.

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% → стоп 6% → розмір X. ATR 1% → стоп 2% → розмір 3X. Результат: однаковий грошовий ризик при різних рівнях волатильності.

Kelly Criterion

Математично оптимальний розмір позиції для максимізації довгострокового зростання капіталу:

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% капіталу.

Занадто агресивно. Зазвичай Half Kelly (12.5%) або Quarter Kelly. Повний Kelly спричиняє величезний drawdown попри теоретичну оптимальність.

Drawdown-Based Scaling

Зменшуємо позиції при наближенні до max 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

Correlation Adjustment

Якщо портфель вже утримує декілька корельованих позицій — нова додає менше диверсифікації. Розмір нової позиції зменшується пропорційно:

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%

Розробляємо систему dynamic position sizing з конфігурованою комбінацією методів: fixed fractional + volatility adjustment + drawdown scaling + correlation adjustment. Єдиний модуль, інтегрується в будь-яку торговельну стратегію.