Введение: зачем рынку нужна вероятностная модель
Большинство торговых систем работают детерминированно: “если RSI пересёк X — покупай”.Но рынок — стохастическая система. Сигналы не бинарны, они вероятностны.
Это приводит к трём фундаментальным проблемам классических индикаторных систем:
- Отсутствие нормализацииИндикаторы дают значения в разных единицах, не сопоставимы между собой.
- Нет учёта рыночных режимовRSI=70 в тренде и RSI=70 в боковике — разные вещи по вероятности разворота.
- Нет вероятностной оценки результатаТрейдеру нужно не “Buy”, а «Вероятность роста 0.67 при уверенности 0.72». Это более объективная мера
И анализатор, который мы сегодня разберём, решает это, используя:
- только OHLCV-данные
- многовременной анализ (HTF/LTF)
- оценку волатильности
- нормализованные регрессионные признаки
- рыночные режимы как скрытые состояния
- логистическую функцию превращения score → probability
- модель confidence для оценки качества сигналов
- анализ альткоинов через TOTAL/TOTAL2/TOTAL3/OTHERS.D
Система превращает разрозненные технические признаки в унифицированную вероятностную модель рынка.
Чтобы не засорять статью безумным количеством кода, основной скрипт выложен на github
2. Архитектура проекта
Проект состоит из четырёх ключевых модулей:
<code>DataManager – загрузка данных OHLCV
MTF Analyzer – анализ разных таймфреймов
Technical Indicators – расчёт всех raw-метрик
Scoring Engine – превращение сигналов в вероятность
Alt-Market Analyzer – анализ TOTAL/TOTAL2/TOTAL3/OTHERS.D
</code>
Модули взаимодействуют так:
- DataManager скачивает OHLCV через CCXT.
- AdvancedTechnicalAnalyzer считает индикаторы.
- MultiTimeframeAnalyzer рассчитывает согласованность трендов между HTF/LTF/Daily.
- VolatilityRegimeEngine определяет волатильность.
- IntelligentScoringEngine превращает все признаки в итоговый score.
- Score → логистическая функция → вероятность направления цены.
- Alt-Market Analyzer добавляет макрорынок (TOTAL/TOTAL2/TOTAL3, OTHERS.D).
- Всё сохраняется в JSON/CSV и отображается в summary.
3. Математическая база модели
Разберём фундаментальные блоки, на которых построена модель.
3.1 ATR — оценка истинной волатильности
ATR = EMA(True Range), где True Range =max(high - low, |high - close_prev|, |low - close_prev|)
Это даёт оценку амплитуды движения без направления.
Используется в модуле:
- Volatility Indicators (atr_percent)
- Volatility Regime Engine
- Momentum Risk Adjustment
ATR позволяет системе учитывать:
- низкую волатильность (аккумуляция)
- высокую волатильность (паника, разворот, новости)
3.2 ADX — вычисление трендовости рынка
ADX — ядро определения рыночного режима.Он показывает силу тренда, а не направление.
<code>ADX = EMA(DX)
DX = |+DI − −DI| / (+DI + −DI)
+DI = EMA(high − prev_high)
−DI = EMA(prev_low − low)</code>
Использование в модели:
- market_regime_score (0–1)
- режимы trending / consolidation / mixed
Важный момент: ADX вводит рыночные режимы как скрытые состояния.
3.3 Дисперсия & std доходностей
Историческая волатильность:
<code>σ = std(close.pct_change().rolling(20))</code>
Это используется:
- для текущего режима волатильности
- для Momentum Risk Adjusted Score
- для Volatility Score
- как фильтр всплесков волатильности
3.4 Линейная регрессия как модель тренда
Важнейшая идея:
slope = направление
r² = устойчивость тренда
Использование:
- trend_strength
- trend_consistency
- оценка рыночной структуры
- market_regime_score
- согласованность по таймфреймам
Получаем намного лучшее представление тренда, чем просто EMA50/200.
3.5 Логистическая функция вероятности
Итоговый score переводится в вероятность через логистическую функцию:

Используется классическая сигмоидная модель.
P — итоговая вероятность, s — итоговый score (получен путём свёртки всех факторов), k — коэффициент крутизны кривой — чем выше k, тем резче будет логистическая кривая, т.е. реакция на изменение факторов. Она задаётся в конфиге. Там же задаётся и смещение середины для нашей функции x0. e — числа эйлера, оно обеспечивает нормализацию в диапазон и симметрию кривой.
Плюсы:
- score превращается в интерпретируемое “0.73 вероятности роста”
- небольшие изменения score вокруг x0 дают сильные изменения P
- устойчивость к экстремальным значениям
3.6 Многовременные согласованные тренды (MTF)
Модель использует 3 TF:
- HTF = 1 week
- Daily = 1 day
- LTF = 4h
Согласованность =EMA20>EMA50 + slope >0 + RSI согласованность.
Выход:
- htf_trend
- ltf_trend
- daily_trend
- htf_alignment_score (0→1)
4. Основные функциональные блоки системы
На основе кода разберём ключевые вычислительные ядра.
4.1 Price Action Engine
Использует:
- price_vs_sma20/sma50
- позицию цены в канале (max20/min20)
- расстояние до уровней S/R
- близость к покупке/продажи
Экономический смысл:
- цена ниже SMA20/SMA50 → вероятность роста выше
- цена в нижней части канала → вероятный отскок
- цена у поддержки/сопротивления → вероятностные паттерны разворота
4.2 Volume Engine
Содержит:
- Volume Ratio (V / SMA20)
- Volume Momentum
- Price-Volume Correlation
- OBV & OBV Trend
Сильный рыночный признак: Если цена растёт + объём растёт → рост подтверждён.
Если цена падает + объёмы падают → падение ослабевает.
4.3 Market Structure Engine
Использует:
- Higher Highs / Lower Lows
- trend_strength (регрессия)
- trend_consistency (r²)
- breakout_potential
Смысл: Система понимает, находится ли инструмент в:
- импульсном тренде
- устойчивой консолидации
- предбрейк-аут состоянии
4.4 Momentum Engine
Модуль использует:
- RSI
- Stochastic
- Momentum (5d, 10d, 20d)
- ROC
- Risk-adjusted momentum (momentum / volatility)
Это позволяет системе определять состояние:
- перекупленности/перепроданности
- истинной силы импульса
- согласованности краткосрочного и среднесрочного импульса
4.5 Volatility Engine
Содержит:
- volatility_20d
- ATR %
- Bollinger Bands position (bb_position)
Логика:
- низкая волатильность → вероятность выхода растёт
- высокая волатильность → сигнал хуже для входа
- цена у нижней полосы → вероятное восстановление
- цена у верхней → вероятная коррекция
4.6 Liquidity Engine
На основе:
- volume_ma20 * price
- логарифмической нормализации
- тренда ликвидности (vol_ma5 / vol_ma20)
Смысл:
- низкая ликвидность → модель снижает уверенность сигнала
- высокая ликвидность → рынок более предсказуем
4.7 Market Regime Engine
Режимы:
- trending — трендовые волатильные движения
- consolidation — консолидация, диапазон
- mixed — смешанные режимы
Построен на:
- ADX
- trend_strength — силе тренда
- волатильности
Сигналы усиливаются/ослабляются в зависимости от режима:
Error: [31m The Parser function of type «table» is not defined. Define your custom parser functions as: [34mhttps://github.com/pavittarx/editorjs-html#extend-for-custom-blocks [0m
5. Итоговый Final Score
Система объединяет:
- Price Action
- Volume
- Market Structure
- Momentum
- Volatility
- Market Sentiment
- HTF alignment
- Volatility regime
- Market regime
- Liquidity score
С двумя наборами весов:
- base (weights)
- v2 (weights_v2)
Итоговая формула:
FinalScore = Σ(score_i * weight_i) / Σ(weight_i)
6. Преобразование в вероятность
Используется логистическая функция:
<code>ProbLong = 1 / (1 + exp(-k(score - x0)))</code>
Где:
- score > 0 → рост
- score < 0 → падение
- k регулирует кривизну
7. Модель Confidence
Confidence учитывает:
- отклонение RSI от 50
- объемную активность
- силу тренда
- magnitude final score
Формула — усреднение нормализованных факторов.
Confidence помогает различать:
- сильные вероятностные сигналы
- неуверенные сигналы
8. Alt-Market Analyzer: TOTAL/TOTAL2/TOTAL3/OTHERS.D
Используются данные CoinGecko:
Строятся индексы:
- TOTAL — всё
- TOTAL2 — без BTC
- TOTAL3 — без BTC и ETH
- OTHERS.MCAP — mcaps всех кроме топ N
- OTHERS.D = OTHERS / TOTAL
Модель позволяет:
- оценивать сезонность альтов
- сравнивать силу альтов против BTC/ETH
- искать корреляции TOTAL2/TOTAL3
- определять ускорение или замедление рынка
Также рассчитываются:
- vol7/vol30 — соотношение обьемов
- vol-adjusted returns — возврат ценовых значений, скорректированный на объём
- относительная сила против BTC/ETH
9. Как интерпретировать результаты
Каждый инструмент получает следующие данные: symbol, price, final_score, prob_long, confidence, category_scores, indicators — тоесть все те фильтры и значения которые мы ранее описали. Вернее, основные из них.
Пример:
- ProbLong = 0.78 → высокая вероятность роста
- Confidence = 0.65 → уверенность средняя
- В ключевых факторах dominate momentum & market_structure
Трейдер или аналитик может принимать решения опираясь не на субъективные индикаторы, а на количественную модель.
Заключение
Мой анализатор — это попытка построить универсальный вероятностный движок для анализа рынка, используя только OHLCV-данные, но объединяя:
- многовременной анализ
- рыночные режимы
- регрессионную статистику
- волатильность и объёмы
- соотношение силы альтов
- нормализованную оценку признаков
- вероятностные функции
Это не торговый бот, а исследовательская модель, похожая на действительно качественные аналитические движки.
Она даёт:
- вероятность роста
- уверенность в сигнале
- ключевые факторы
- устойчивые результаты в разных режимах рынка
Эту систему можно легко интегрировать в алгоритмическую торговлю, Telegram-ботов, дашборды трейдинга или даже как часть ML-модели.
В мое время (2000г-2007г) вероятности давали проги ВА Эллиота EWA 6.0 и др. Теперь мы придумываем колесо? И это правильно!!! Только опыт(тест), сын ошибок трудных, откроет новые горизонты.
Учимся читать график по каждой свече .1-VSA .2-ВА Эллиота .3- фракталы=свечи+объем.
ezomm, большое спасибо!)
понимаю, что есть ещё куда стремится по данному анализатору, сейчас это одна из промежуточный версий, которая действительно стала хорошо работать в real-time тестировании.
Обязательно попробую реализовать названные дополнения