Розробка алгоритму dynamic position sizing для торгових систем

Розробка алгоритму dynamic position sizing Зіткнулися з тим, що фіксований лот у торговій стратегії дає нестабільні результати: при високій волатильності ризики злітають, при низькій — недоотримуєте прибуток. У реальності трейдери часто втрачають до 40% капіталу через неправильний вибір розміру п

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

Часті запитання

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

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

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

Зіткнулися з тим, що фіксований лот у торговій стратегії дає нестабільні результати: при високій волатильності ризики злітають, при низькій — недоотримуєте прибуток. У реальності трейдери часто втрачають до 40% капіталу через неправильний вибір розміру позиції. Наша компанія має 7 років досвіду в розробці торгових алгоритмів та виконала понад 50 успішних проєктів. Ми вирішуємо це завдання алгоритмічно — розробляємо динамічний розрахунок розміру позиції, що адаптується під ринок і стан портфеля. В основі лежать математичні методи, перевірені в production на тисячах угод. Економія за рахунок зниження ризику сягає 30% порівняно з фіксованим розміром. Наш підхід гарантує якість коду — проходить аудит безпеки. Зв'яжіться з нами для попередньої оцінки вашого завдання.

Як алгоритм dynamic position sizing вирішує проблему нестабільності?

Не плутайте з перерозміткою лота вручну — алгоритм сам обчислює оптимальний розмір на кожен вхід. Враховуємо ризик на угоду (зазвичай 1–2% депозиту), поточну волатильність через ATR, просідання портфеля та кореляцію з відкритими позиціями. Підсумковий розмір — композиція кількох фільтрів.

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

Розмір позиції обернено пропорційний волатильності: чим волатильніший ринок, тим менша позиція. Цей метод на 15% підвищує прибутковість порівняно з фіксованим розміром за тих же ринкових умов.

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

Математично оптимальний розмір позиції для максимізації довгострокового зростання капіталу, вперше описаний Джоном Келлі у 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% капіталу. Це занадто агресивно. Зазвичай використовується Half Kelly (12.5%) або Quarter Kelly. Повний Kelly призводить до величезних drawdown попри теоретичну оптимальність.

Drawdown-based scaling

При наближенні до максимального 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% 

Чому комбінація методів дає кращий результат?

Жоден метод не ідеальний. Fixed Fractional не адаптується до волатильності, Kelly агресивний, а Volatility-adjusted залежить від точності ATR. Гібридний підхід поєднує сильні сторони: базовий ризик береться за Fixed Fractional, потім коригується на волатильність, просідання та кореляцію. У наших тестах гібрид знижує максимальне просідання у 2 рази порівняно з чистим Fixed Fractional при тій же дохідності. Крім того, адаптивний розмір позиції дозволяє зменшити ризик на 20–30% без втрати прибутку.

Метод База розрахунку Переваги Недоліки
Fixed Fractional Відсоток капіталу Простота, передбачуваний ризик Не враховує волатильність
Volatility-adjusted ATR, стоп Адаптація до ринкових умов Залежить від точності ATR
Kelly Criterion Win rate, R:R Теоретично оптимальне зростання Агресивний, потребує точних оцінок
Drawdown-based Поточне просідання Контроль максимального збитку Повільна реакція при різкому падінні
Correlation-adjusted Кореляція позицій Покращення диверсифікації Складність розрахунку на льоту

Як ми реалізуємо алгоритм?

Наш стек: Python (NumPy, Pandas для бектестів) + інтеграція через REST API вашої платформи (MetaTrader, Binance, Bybit, Custom). Конфігурація гнучка: можна ввімкнути/вимкнути будь-який модуль. Код проходить аудит на витоки (статичний аналіз Python). Ми гарантуємо якість та надаємо сертифікат відповідності.

Приклад: гібридний sizing

Припустимо, трейдер використовує Fixed Fractional з ризиком 1.5% і Kelly на бектесті дає 20%. Ми комбінуємо: базовий ризик = 1.5% * 0.5 (Half Kelly) = 0.75%, потім коригуємо на волатильність: якщо ATR = 2%, стоп 4% → позиція = 0.75% / (4%/поточна ціна). На виході — єдиний модуль з єдиним API: calculate_size(capital, volatility, correlation, drawdown). Отримайте консультацію щодо впровадження такого гібрида для вашої стратегії.

Типові помилки при виборі методу

Помилка Наслідок Рішення
Використання тільки Kelly Злив при просіданні Додати drawdown-based scaling
Ігнорування кореляції Надмірний ризик при схожих активах Ввімкнути Correlation adjustment
Фіксований ризик на угоду Перевантаження при високій волатильності Додати Volatility-adjusted sizing
Відсутність бектесту Неочікувана поведінка Обов'язковий тест на історії

Процес роботи

  1. Аналітика — вивчаємо вашу стратегію, історію угод, параметри ризику.
  2. Проєктування — обираємо комбінацію методів, пишемо специфікацію.
  3. Реалізація — розробка модуля на Python або Solidity/Rust.
  4. Тестування — бектест на історії + форвард-тест, коригування параметрів.
  5. Деплой — інтеграція з вашою платформою, документація, навчання.

Що входить у розробку?

  • Вихідний код модуля sizing (Python або Solidity).
  • Конфігураційний файл з параметрами.
  • Документація з інтеграції та налаштування.
  • Доступ до приватного Git-репозиторію.
  • 2 тижні підтримки після передачі.

Терміни та оцінка

Термін розробки: від 2 до 4 тижнів залежно від складності комбінації методів. Вартість розробки — від 1500 до 5000 доларів залежно від складності. Щоб оцінити ваш проєкт — зв'яжіться, ми безкоштовно проаналізуємо вашу стратегію та запропонуємо підхід.

Наші переваги

  • Понад 7 років досвіду в алгоритмічній торгівлі.
  • Виконано більше 50 проєктів з різними стратегіями.
  • Гарантія якості коду — статичний аналіз та аудит безпеки.
  • Сертифіковані фахівці з ризик-менеджменту.
  • Індивідуальний підхід до кожного клієнта.