Розробка системи максимальної просадки (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

Розроблення системи контролю максимальної просадки

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

Розрахунок просадки

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()
    
    # Знайти період максимальної просадки
    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

Рівні реакції системи

Система працює за принципом світлофора:

Зелений (просадка < 50% ліміту): нормальна торгівля.

Жовтий (50–75% ліміту): попередження. Зменшити розмір позиції на 25%.

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

Червоний (> 90% ліміту): майже досягнув ліміту. Закрити половину відкритих позицій.

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

class DrawdownController:
    LEVELS = [
        (0.50, 'yellow', 0.75),   # при 50% від ліміту: торгуйте на 75% розміру
        (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}

Відстеження відновлення просадки

Час відновлення: скільки часу знадобилося для відновлення після попередніх просадок. Допомагає оцінити якість стратегії.

Коефіцієнт відновлення: загальний прибуток / максимальна просадка. Показує, наскільки система «окупає» ризик.

Підводний графік: графік часу перебування портфеля у просадці. Важливий інструмент психологічної оцінки для трейдера.

Калібрування лімітів

Типові значення максимальної просадки за типом стратегії:

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

Розробляємо систему контролю просадки з багаторівневою реакцією, автоматичним зменшенням позицій, автоматичним вимикачем-зупинком та звітністю за часом відновлення.