Skip to content

Latest commit

 

History

History
200 lines (136 loc) · 7.96 KB

File metadata and controls

200 lines (136 loc) · 7.96 KB

Быстрый Старт: Методология Геометрического Анализа Рынка

⚠️ ВНИМАНИЕ: Это краткое введение. Для полного понимания прочитайте полную методологию.


🎯 Что Это?

Методология для классификации рыночных состояний (тренд, флэт, аномалия), а не для предсказания точной цены.

Ключевой принцип:

Рынок нельзя предсказать точно, но можно классифицировать его состояние с высокой надёжностью.


🚀 5-минутное Введение

Шаг 1: Нормализация Данных

Преобразуйте цены в ранги (устойчивость к выбросам):

# Псевдокод
prices = [100, 102, 98, 105, ...]
ranks = rank_normalize(prices, window=20)  # Ранги в окне 20 баров

Зачем: Устраняет look-ahead bias и устойчиво к крахам.

Шаг 2: Фазовое Пространство

Преобразуйте одномерный ряд в многомерную траекторию:

# Метод вложения Такенса
tau = 3  # Задержка (дни/бары)
m = 3    # Размерность (3-5, не больше!)

# Точка в фазовом пространстве
P_t = (x_t, x_{t-tau}, x_{t-2*tau})

Зачем: Видим структуру, скрытую во временном ряду.

Шаг 3: Энергетический Фильтр

Оцените силу движения:

energy = sum(x_i^2)  # Сумма квадратов доходностей
threshold = percentile(energy_history, 80)  # 80-й перцентиль за 252 дня

if energy < threshold:
    НЕ ТОРГОВАТЬ  # Рынок "мёртвый"

Зачем: Фильтрует периоды низкой волатильности (80% пользы при 20% усилий).

Шаг 4: Классификация Режима

Сравните текущий вектор с шаблонами:

# Нормализуем вектор к единичной длине
normalized_vector = normalize(current_vector)

# Скалярное произведение с шаблоном
signature = dot_product(normalized_vector, template_trend_long)

if signature > 0.7:
    РЕЖИМ: Тренд вверхАктивировать трендовую стратегию
elif signature < -0.7:
    РЕЖИМ: Тренд внизАктивировать short-стратегию
else:
    РЕЖИМ: НеопределённостьНЕ ТОРГОВАТЬ

Зачем: Выбирает подходящую суб-стратегию для текущего режима.

Шаг 5: Мониторинг Дрейфа

Отслеживайте структурные изменения:

drift = (MA_60(threshold) - Mean_252(threshold)) / Std_252(threshold)

if abs(drift) > 2.0:  # 2 стандартных отклонения
    STOP ТОРГОВЛЮ  # Структурный слом

Зачем: Раннее обнаружение кризисов и смены рыночного режима.


📊 Минимальный Пример

import numpy as np
import pandas as pd

# 1. Загрузка данных
prices = pd.read_csv('data.csv')['close']

# 2. Нормализация (ранги)
def rank_normalize(series, window=20):
    return series.rolling(window).rank(pct=True) * 2 - 1

normalized = rank_normalize(prices)

# 3. Фазовое пространство (tau=3, m=3)
tau = 3
m = 3
phase_space = []
for i in range(tau * (m-1), len(normalized)):
    point = [normalized.iloc[i - j*tau] for j in range(m)]
    phase_space.append(point)

# 4. Энергетический фильтр
returns = prices.pct_change()
energy = (returns ** 2).rolling(252).quantile(0.8)

# 5. Классификация (упрощённо)
current_vector = np.array(phase_space[-1])
current_vector = current_vector / np.linalg.norm(current_vector)  # Нормализация

trend_template = np.array([1, 1, 1]) / np.sqrt(3)  # Шаблон тренда
signature = np.dot(current_vector, trend_template)

# 6. Решение
if energy.iloc[-1] < threshold:
    signal = "НЕ ТОРГОВАТЬ (низкая энергия)"
elif signature > 0.7:
    signal = "ТРЕНД ВВЕРХ"
elif signature < -0.7:
    signal = "ТРЕНД ВНИЗ"
else:
    signal = "НЕОПРЕДЕЛЁННОСТЬ"

⚠️ Критические Требования

Перед Реализацией:

  • Минимум 252 дня данных для калибровки порогов
  • Walk-Forward валидация на множестве подпериодов
  • Тест на суррогатных данных (GARCH/IAAFT) для проверки устойчивости
  • Бэктест 252+ дней перед использованием на реальных деньгах
  • 30 дней paper trading для проверки исполнения

Типичные Ошибки:

❌ Неправильно ✅ Правильно
MinMax-нормализация Ранговая нормализация
Фиксированные пороги Перцентили на истории
Energy на нормализованных данных Energy на исходных доходностях
Частый пересчёт τ (каждый бар) Пересчёт τ 1 раз в квартал

Подробнее: Часть 10. Отсеянные Идеи


📚 Следующие Шаги

  1. Прочитайте полную методологию

    • Часть 2: Геометрический Анализ (детали фазового пространства)
    • Часть 4: Валидация (защита от переобучения)
    • Часть 7: Мониторинг (детекция структурных сломов)
  2. Изучите чек-лист перед реализацией

  3. Ознакомьтесь с типичными ошибками


🎓 Ожидаемые Результаты

Реалистичные метрики:

  • Sharpe Ratio: 0.5-1.5 (не 5.0!)
  • Максимальная просадка: 15-25%
  • Win Rate: 45-55%

НЕ ожидайте:

  • ❌ 100% прибыль в месяц
  • ❌ Работает на всех активах без калибровки
  • ❌ Работает без бэктеста и валидации

📞 Вопросы?


⚠️ Дисклеймер: Это образовательный материал. Не используйте на реальных деньгах без полной валидации.