Разработка системы максимальной просадки (max drawdown control)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы максимальной просадки (max drawdown control)
Средний
~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

Разработка системы максимальной просадки (max drawdown control)

Максимальная просадка (Maximum Drawdown, MDD) — наибольшее снижение от пика до дна портфеля за период. Это ключевая метрика риска: трейдер может пережить многие плохие периоды, но катастрофический drawdown психологически и финансово разрушителен.

Расчёт drawdown

import numpy as np

def calculate_max_drawdown(equity_curve):
    equity = np.array(equity_curve)
    peak = np.maximum.accumulate(equity)
    drawdown = (equity - peak) / peak
    max_drawdown = drawdown.min()
    
    # Найти период максимального drawdown
    end_idx = drawdown.argmin()
    start_idx = equity[:end_idx].argmax()
    
    return {
        'max_drawdown': max_drawdown,
        'start_date_idx': start_idx,
        'end_date_idx': end_idx,
        'drawdown_duration': end_idx - start_idx
    }

def calculate_current_drawdown(equity_history):
    peak = max(equity_history)
    current = equity_history[-1]
    return (current - peak) / peak

Уровни реакции системы

Система работает по принципу светофора:

Зелёный (drawdown < 50% лимита): нормальная торговля.

Жёлтый (50–75% лимита): предупреждение. Уменьшить размер позиций на 25%.

Оранжевый (75–90% лимита): серьёзное предупреждение. Уменьшить размер на 50%. Только высококачественные сигналы.

Красный (> 90% лимита): почти достигнут лимит. Закрыть половину открытых позиций.

Стоп (= 100% лимита): автоматическое закрытие всех позиций. Полная остановка торговли до ручного подтверждения.

class DrawdownController:
    LEVELS = [
        (0.50, 'yellow', 0.75),   # at 50% of limit: trade at 75% size
        (0.75, 'orange', 0.50),
        (0.90, 'red', 0.25),
        (1.00, 'halt', 0.00)
    ]
    
    def __init__(self, max_drawdown_limit=0.15):
        self.limit = max_drawdown_limit
        self.peak_equity = None
    
    def update_and_check(self, current_equity):
        if self.peak_equity is None or current_equity > self.peak_equity:
            self.peak_equity = current_equity
        
        current_dd = (self.peak_equity - current_equity) / self.peak_equity
        dd_ratio = current_dd / self.limit  # как доля от лимита
        
        for threshold, level, size_mult in reversed(self.LEVELS):
            if dd_ratio >= threshold:
                return {
                    'level': level,
                    'current_dd': current_dd,
                    'dd_ratio': dd_ratio,
                    'size_multiplier': size_mult,
                    'halt': level == 'halt'
                }
        
        return {'level': 'green', 'size_multiplier': 1.0, 'halt': False}

Drawdown recovery tracking

Time to recovery: сколько времени понадобилось для восстановления после предыдущих drawdown. Помогает оценить качество стратегии.

Recovery factor: общая прибыль / максимальный drawdown. Показывает, насколько система «окупает» риск.

Underwater chart: график времени нахождения портфеля в просадке — важный инструмент психологической оценки для трейдера.

Калибровка лимитов

Типичные значения max drawdown по типу стратегии:

Тип стратегии Рекомендуемый MDD limit
Консервативная (trend following) 15–20%
Умеренная (mean reversion) 10–15%
Агрессивная (HFT, scalping) 5–8%
Маркет-мейкинг 3–5%

Разрабатываем систему контроля просадки с многоуровневым реагированием, автоматическим уменьшением позиций, circuit breaker halt и отчётностью по recovery времени.