Разработка системы расчета позиции по риску

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

Разработка системы расчета позиции по риску

Система расчёта размера позиции по риску — основа профессионального управления капиталом. Вместо «купить на $1000» — «рискнуть $100 при стопе на 5% ниже входа» и автоматически рассчитать объём.

Базовая формула

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, а не к произвольному %:

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% ниже. Размер позиции автоматически уменьшается при высокой волатильности.

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-based sizing, portfolio risk контролем, leverage support и настраиваемыми constraints.