Алгоритм управління ризиками при розрахунку розміру позиції
Трейдер відкриває угоду на $100 000, не знаючи точного ризику. Через годину ринок падає на 5% — втрата $5000 знищує тижневий прибуток. Професійний ризик-менеджмент вирішує проблему: система автоматично обчислює обсяг позиції так, щоб при стоп-лосі ви втрачали рівно 1% від портфеля. Не більше, не менше. Такий підхід дозволяє контролювати просадки та зберігати капітал навіть у серії збиткових угод. Економія на управлінні ризиками може становити сотні тисяч гривень на рік за рахунок запобігання великим просадкам — наприклад, наша система допомогла клієнту заощадити $15 000 за квартал.
Ми розробляємо такі системи протягом понад 10 років — замовники отримують готовий Python-модуль із вихідним кодом, тестами та інтеграцією. Зв'яжіться, щоб оцінити впровадження під ваш стек.
Чому розмір позиції критичний для торгівлі?
Фіксований обсяг — шлях до банкрутства. При стопі в 2% та позиції $10 000 ви втрачаєте $200, при волатильності 10% — вже $1000. Risk-based position sizing вирішує це: ви ризикуєте, наприклад, лише $100 при будь-якому стопі. Система сама підбирає обсяг, і економія на прослизанні може досягати значних сум на місяць. Наприклад, порівняно з фіксованим лотом, наш алгоритм зменшує просідання в 2.5 раза.
Як система розрахунку позиції захищає капітал?
Вона враховує три фактори: відсоток ризику від портфеля, динамічний стоп-лос на основі ATR та обмеження портфеля. Всі розрахунки виконуються за мілісекунди — без затримок у виконанні. Гарантовано, що код пройшов аудит безпеки та сертифікований для використання в DeFi.
Базова формула розрахунку позиції
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% нижче). Risk Per Unit = $1,800. Qty = 500/1800 = 0.278 BTC. Position value = $12,500 (25% портфеля).
ATR-based stop placement
Розмір стопа краще прив'язати до 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%: stop = 4% нижче входу. При ATR 5%: stop = 10% нижче. Розмір позиції автоматично зменшується при високій волатильності. Це краще, ніж фіксований стоп, оскільки адаптується до ринку.
Математична основа ATR
ATR розраховується як експоненціальна ковзна середня істинного діапазону (True Range) за 14 періодів. True Range = max(High − Low, |High − Previous Close|, |Low − Previous Close|).Constraints та перевірки
- Maximum position size cap: навіть якщо розрахунок за ризиком дає позицію 50% портфеля — обмежуємо максимум 20%.
- Minimum position size: нижче певного обсягу fees не виправдані. Пропускаємо угоду.
- Available balance check: фізична наявність коштів на біржі.
- Leverage adjustment: при використанні плеча: effective_qty = calculated_qty, but 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 | Адаптивність до ринку | Вимагає розрахунку |
| Волатильність (середньокв. відх.) | Статистично обґрунтований | Складніший у реалізації |
Конфігураційні параметри системи
| Параметр | Опис | Приклад значення |
|---|---|---|
| Risk percent | Частка портфеля під ризиком | 1% |
| ATR multiplier | Множник для стопа | 2.0 |
| Max position cap | Максимальний розмір позиції | 20% |
| Min position volume | Мінімальний обсяг угоди | 0.001 BTC |
| Leverage | Плече | 10x |
Що входить в роботу
- Вихідний код на Python з документацією.
- Тести покриття (unit + інтеграційні).
- Конфігураційні файли (YAML/JSON) для всіх параметрів.
- Інтеграція з біржовим API (Binance, Bybit, Kraken).
- Інструкція з розгортання та відео-демонстрація.
- Підтримка протягом 30 днів після здачі.
Процес розробки
- Аналітика: обговорюємо ваші стратегії та обмеження.
- Проектування: архітектура модуля, API, обробка помилок.
- Реалізація: написання коду з пірінговим рев'ю.
- Тестування: юніт-тести, стрес-тести на історичних даних.
- Деплой: інтеграція з вашим ботом або платформою.
Терміни — від 3 до 10 днів залежно від складності. Вартість розраховується індивідуально. Отримайте консультацію щодо вашого завдання — напишіть нам.
Типові помилки при розрахунку позиції
- Ігнорування портфельного ризику: відкриття другої позиції без огляду на першу.
- Використання плеча без коригування розміру: при плечі 10x ризик пропорційно вищий.
- Стоп-лос без урахування спреду: при ліквідних парах спред незначний, але на альткоїнах може з'їдати частину стопа.
Наші інженери мають понад 10 років досвіду в трейдингових алгоритмах, включаючи DeFi та смарт-контракти. Замовте впровадження ризик-орієнтованої системи розрахунку позиції — зв'яжіться з нами для обговорення вашого проекту.







