Розробка алгоритму 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 |
| Відсутність бектесту | Неочікувана поведінка | Обов'язковий тест на історії |
Процес роботи
- Аналітика — вивчаємо вашу стратегію, історію угод, параметри ризику.
- Проєктування — обираємо комбінацію методів, пишемо специфікацію.
- Реалізація — розробка модуля на Python або Solidity/Rust.
- Тестування — бектест на історії + форвард-тест, коригування параметрів.
- Деплой — інтеграція з вашою платформою, документація, навчання.
Що входить у розробку?
- Вихідний код модуля sizing (Python або Solidity).
- Конфігураційний файл з параметрами.
- Документація з інтеграції та налаштування.
- Доступ до приватного Git-репозиторію.
- 2 тижні підтримки після передачі.
Терміни та оцінка
Термін розробки: від 2 до 4 тижнів залежно від складності комбінації методів. Вартість розробки — від 1500 до 5000 доларів залежно від складності. Щоб оцінити ваш проєкт — зв'яжіться, ми безкоштовно проаналізуємо вашу стратегію та запропонуємо підхід.
Наші переваги
- Понад 7 років досвіду в алгоритмічній торгівлі.
- Виконано більше 50 проєктів з різними стратегіями.
- Гарантія якості коду — статичний аналіз та аудит безпеки.
- Сертифіковані фахівці з ризик-менеджменту.
- Індивідуальний підхід до кожного клієнта.







