Алгоритм управления рисками при расчете размера позиции
Трейдер открывает сделку на $100 000, не зная точного риска. Через час рынок падает на 5% — потеря $5000 уничтожает недельную прибыль. Профессиональный риск-менеджмент решает проблему: система автоматически вычисляет объем позиции так, чтобы при стоп-лоссе вы теряли ровно 1% от портфеля. Ни больше, ни меньше. Такой подход позволяет контролировать просадки и сохранять капитал даже в серии убыточных сделок. Экономия на управлении рисками может составлять около $900–1.3k в год за счет предотвращения крупных просадок.
Мы разрабатываем такие системы на протяжении многих лет — заказчики получают готовый Python-модуль с исходным кодом, тестами и интеграцией. Свяжитесь, чтобы оценить внедрение под ваш стек.
Почему размер позиции критичен для торговли?
Фиксированный объем — путь к банкротству. При стопе в 2% и позиции $10 000 вы теряете $200, при волатильности 10% — уже $1000. Risk-based position sizing решает это: вы рискуете, например, только $100 при любом стопе. Система сама подбирает объем, и экономия на проскальзывании может достигать значительных сумм в месяц.
Как система расчета позиции защищает капитал?
Она учитывает три фактора: процент риска от портфеля, динамический стоп-лосс на основе 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% ниже). 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, но 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 и смарт-контракты. Закажите внедрение риск-ориентированной системы расчета позиции — свяжитесь с нами для обсуждения вашего проекта.







