preview
Анализ влияния солнечных и лунных циклов на цены валют

Анализ влияния солнечных и лунных циклов на цены валют

MetaTrader 5Интеграция |
468 1
Yevgeniy Koshtenko
Yevgeniy Koshtenko

Представьте себе опытного трейдера с тридцатилетним стажем, который каждое утро смотрит не только на графики, но и на лунный календарь. Он никогда не признается в этом своим коллегам, потому что боится насмешек. Но его статистика торговли показывает странную закономерность: в определенные фазы луны его точность предсказаний возрастает на двадцать процентов. Совпадение? Может быть. А может, и нет.


Луна, солнце и психология рынка

Технический анализ застрял в прошлом: RSI, MACD, скользящие средние — всё то же самое, что и 40 лет назад. Даже машинное обучение работает с теми же свечами и барами. Мы смотрим на старую карту через новый микроскоп.

Между тем, исследования показывают: луна и солнце влияют не только на природу, но и на людей — а значит, и на рынки.
Луна управляет приливами, а человеческое тело на 70% состоит из воды. Исследования фиксируют рост психиатрических обращений и ухудшение сна в полнолуние. В это время уровень мелатонина падает, растёт тревожность — трейдеры становятся импульсивнее. Новолуние, наоборот, делает их спокойнее.

Солнечные циклы влияют иначе. Недостаток света зимой вызывает апатию и снижает склонность к риску; весной и летом настроение и оптимизм растут — вместе с рынками. Исследования подтверждают корреляцию между длиной дня и доходностью акций. Геомагнитные бури усиливают стресс, ошибки и волатильность.

Влияние работает слоями: биохимия → настроение → поведение → рыночные движения. Один человек может не заметить эффект, но миллионы синхронных реакций создают волны цен.

Даже легендарный трейдер У.Д. Ганн учитывал астрологические циклы в торговле. Его методы сложны и неформализуемы, но результаты впечатляли.
Может, именно в этих ритмах — недостающая переменная рынка?


Когда Python встречает Зодиак

А что если взять астрологические концепции и переложить их на язык современной науки о данных? Именно этой идеей я загорелся несколько месяцев назад. Синодический месяц длится 29.530588 дней, тропический год — 365.25636 дней. Эти циклы существовали задолго до появления биткоина и будут существовать еще миллионы лет. Они стабильны, предсказуемы и поддаются точному математическому описанию.

Создавая систему, я начал с определения астрономических констант в коде:

class UniversalForexAstro:
    def __init__(self, pair_name="USDCAD"):
        self.pair_name = pair_name
        
        # Astronomical cycles
        self.lunar_cycle = 29.530588  # Synodic month
        self.solar_cycle = 365.25636  # Tropical year
        
        # Base dates for different currencies
        self.birth_dates = {
            'USD': datetime(1792, 4, 2),   # US Dollar
            'EUR': datetime(1999, 1, 1),   # Euro
            'GBP': datetime(1694, 7, 27),  # British Pound
            'JPY': datetime(1871, 5, 10),  # Japanese Yen
            'CHF': datetime(1850, 5, 7),   # Swiss Franc
            'CAD': datetime(1858, 8, 2),   # Canadian Dollar
            'AUD': datetime(1966, 2, 14),  # Australian Dollar
            'NZD': datetime(1967, 7, 10),  # New Zealand Dollar
        }

Каждая валюта получает свою "дату рождения" — момент официального введения в обращение. Доллар США родился второго апреля 1792 года. Евро появился на свет первого января 1999 года. Это не просто исторические факты, они становятся точкой отсчета для всех циклических расчетов.


Архитектура небесного интеллекта

Разные валюты обладают разными характеристиками. Австралийский доллар и новозеландский доллар — это сырьевые валюты, тесно связанные с ценами на металлы и сельскохозяйственную продукцию. Японская йена и швейцарский франк — валюты-убежища, куда бегут инвесторы в моменты паники. Эти характеристики я закодировал в виде числовых коэффициентов:

self.currency_characteristics = {
    'USD': {'risk_appetite': 0.0, 'commodity_correlation': 0.0, 'seasonal_strength': 0.5},
    'EUR': {'risk_appetite': 0.3, 'commodity_correlation': 0.2, 'seasonal_strength': 0.6},
    'GBP': {'risk_appetite': 0.4, 'commodity_correlation': 0.1, 'seasonal_strength': 0.7},
    'JPY': {'risk_appetite': -0.8, 'commodity_correlation': -0.3, 'seasonal_strength': 0.3},
    'CHF': {'risk_appetite': -0.6, 'commodity_correlation': -0.1, 'seasonal_strength': 0.4},
    'CAD': {'risk_appetite': 0.6, 'commodity_correlation': 0.8, 'seasonal_strength': 0.8},
    'AUD': {'risk_appetite': 0.8, 'commodity_correlation': 0.9, 'seasonal_strength': 0.9},
    'NZD': {'risk_appetite': 0.7, 'commodity_correlation': 0.7, 'seasonal_strength': 0.8},
}

Теперь представьте, что луна входит в фазу новолуния. Для пары AUD/JPY это означает одно, а для EUR/USD совершенно другое. Австралиец —риск-валюта с коэффициентом 0.8, йена — валюта-убежище с коэффициентом -0.8. Разница в полтора пункта! Система учитывает эти взаимосвязи через разность характеристик валют.


Вычисление лунной фазы: математика неба

Сердце системы — метод вычисления угла лунной фазы. Код элегантен в своей простоте:

def get_moon_phase_angle(self, date):
    """Moon phase angle"""
    days_since_birth = (date - self.birth_date).days
    lunar_position = (days_since_birth % self.lunar_cycle) / self.lunar_cycle * 360
    solar_position = (days_since_birth % self.solar_cycle) / self.solar_cycle * 360
    phase_angle = (lunar_position - solar_position) % 360
    return phase_angle

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


Танец гармоник

Но простого определения фазы луны недостаточно. Небесные влияния работают через гармоники — периодические колебания разной частоты, которые накладываются друг на друга. Я вычисляю не только базовую фазу луны, но и ее гармоники:

# Lunar features
features['moon_phase_angle'] = moon_phase_angle
features['moon_phase_sin'] = math.sin(math.radians(moon_phase_angle))
features['moon_phase_cos'] = math.cos(math.radians(moon_phase_angle))
features['moon_phase_sin2'] = math.sin(math.radians(moon_phase_angle * 2))
features['moon_phase_cos2'] = math.cos(math.radians(moon_phase_angle * 2))
features['moon_phase_sin4'] = math.sin(math.radians(moon_phase_angle * 4))
features['moon_phase_cos4'] = math.cos(math.radians(moon_phase_angle * 4))

Каждая гармоника несет свою информацию. Первая гармоника отвечает за основной цикл роста и падения. Вторая гармоника захватывает квартальные эффекты. Четвертая — недельные колебания внутри лунного месяца. Шесть чисел полностью описывают текущее состояние лунного цикла.


Лунные эффекты для валютных пар

Самое интересное происходит в методе вычисления лунного влияния на конкретную пару:

def calculate_lunar_effect(self, date):
    """Lunar effects for currency pair"""
    moon_phase_angle = self.get_moon_phase_angle(date)
    phase_name = self.get_moon_phase_name(moon_phase_angle)
    
    effect = 0
    
    # Base and quote currencies react differently
    base_char = self.currency_characteristics.get(self.base_currency,
                                                 {'risk_appetite': 0, 'commodity_correlation': 0})
    quote_char = self.currency_characteristics.get(self.quote_currency,
                                                  {'risk_appetite': 0, 'commodity_correlation': 0})
    
    # Difference in characteristics determines effect strength
    risk_diff = base_char['risk_appetite'] - quote_char['risk_appetite']
    commodity_diff = base_char['commodity_correlation'] - quote_char['commodity_correlation']
    
    # Phase effects
    if phase_name in ['new_moon', 'full_moon']:
        # Critical phases - high volatility
        effect += np.random.choice([-0.015, 0.015]) * (1 + abs(risk_diff))
    
    elif phase_name in ['waxing_crescent', 'first_quarter', 'waxing_gibbous']:
        # Waxing moon is favorable for risk and commodity currencies
        effect += 0.003 * risk_diff + 0.002 * commodity_diff
    
    elif phase_name in ['waning_gibbous', 'last_quarter', 'waning_crescent']:
        # Waning moon is negative for risk currencies
        effect -= 0.003 * risk_diff + 0.002 * commodity_diff
    
    # Harmonics
    effect += math.sin(math.radians(moon_phase_angle)) * 0.001 * risk_diff
    effect += math.sin(math.radians(moon_phase_angle * 2)) * 0.0005 * commodity_diff
    
    return effect

Код реализует астрологическую логику через математику. В критических фазах (новолуние, полнолуние) волатильность растет пропорционально разности риск-аппетитов валют. Растущая луна благоприятствует риск-валютам и сырьевым валютам. Убывающая луна действует противоположно. Гармоники добавляют тонкие колебания, связанные с конкретными характеристиками пары.


Память времени через лаги

Рынки обладают памятью. То, что произошло неделю назад, влияет на сегодняшний день. Поэтому система учитывает лаговые признаки:

self.lag_periods = [1, 2, 4, 8, 13]

# Lag features
for lag in self.lag_periods:
    if i >= lag:
        lag_date = df.iloc[i - lag]['date']
        lag_moon = self.get_moon_phase_angle(lag_date)
        lag_day = lag_date.timetuple().tm_yday
        
        features[f'lag_{lag}_moon_angle'] = lag_moon
        features[f'lag_{lag}_moon_sin'] = math.sin(math.radians(lag_moon))
        features[f'lag_{lag}_moon_cos'] = math.cos(math.radians(lag_moon))
        features[f'lag_{lag}_is_waxing'] = 1 if 15 < lag_moon < 165 else 0
        features[f'lag_{lag}_is_critical'] = 1 if (lag_moon <= 15 or lag_moon >= 345 
                                                    or 165 <= lag_moon <= 195) else 0
        
        # Price lags
        features[f'lag_{lag}_return'] = df.iloc[i - lag]['return']
        features[f'lag_{lag}_volatility'] = df.iloc[i - lag]['volatility']

Где была луна неделю назад? Две недели? Четыре, восемь, тринадцать недель? Система создает восемьдесят восемь признаков для каждой точки времени — многомерный портрет момента, где прошлое и настоящее небес сплетаются с характером валют.


Бинарная классификация: упрощаем задачу

Прогнозировать точную цену — задача неблагодарная. Но ответить на вопрос "будет сильное движение вверх или нет?" — это реальность:

def create_binary_target(self, df, threshold_percentile=60):
    """Binary target variable"""
    returns = df['return'].values
    
    # Adaptive threshold based on percentile
    threshold = np.percentile(np.abs(returns), threshold_percentile)
    
    binary_target = []
    for ret in returns:
        if ret > threshold:
            binary_target.append(1)  # Growth
        else:
            binary_target.append(0)  # Decline/stagnation
    
    return binary_target, threshold

Порог значимого движения определяется через шестидесятый перцентиль абсолютной доходности. Такой подход создает сбалансированную выборку и фокусирует модель на действительно значимых движениях.


CatBoost смотрит на звезды

Для классификации используется CatBoost — градиентный бустинг с поддержкой категориальных признаков:

def train_binary_model(self, features_df, binary_target):
    """Train binary model"""
    print(f"\n=== TRAINING BINARY MODEL FOR {self.pair_name} ===")
    
    # Categorical features
    cat_features = [col for col in features_df.columns if col.startswith('is_')]
    
    # Time-based split
    split_idx = int(len(features_df) * 0.7)
    
    X_train = features_df.iloc[:split_idx]
    X_test = features_df.iloc[split_idx:]
    y_train = binary_target[:split_idx]
    y_test = binary_target[split_idx:]
    
    if CATBOOST_AVAILABLE:
        model = CatBoostClassifier(
            iterations=600,
            learning_rate=0.08,
            depth=13,
            cat_features=cat_features,
            random_seed=42,
            verbose=100,
            early_stopping_rounds=150,
            eval_metric='AUC'
        )
        model.fit(X_train, y_train, eval_set=(X_test, y_test))

Данные разделяются по времени — первые семьдесят процентов на обучение, последние тридцать на тест. Это критически важно: мы не можем обучаться на будущем, только на прошлом.

Результаты на EUR/USD: первые открытия

Система подключается к терминалу MetaTrader 5 и загружает реальные исторические котировки EUR/USD за пятнадцать лет. Недельные бары содержат цены открытия, максимум, минимум и закрытие — полную картину движения валюты с 2010 по 2025 год.

Запускаем анализ для пары EUR/USD с указанием периода и недельного таймфрейма. Система выдаёт результат подключения: MetaTrader 5 успешно инициализирован, загружено 782 недельных бара от четвёртого января 2010 года до тридцатого декабря 2024 года. Данные обработаны, создано восемьдесят восемь астрологических и технических признаков для каждой недели.

Порог значимого роста установлен на уровне 0.78 процента — только самые сильные недельные движения попадают в класс роста. Это всего двадцать три процента от общей выборки, что создаёт хороший баланс для обучения модели. Семьсот восемьдесят три недели реальных рыночных данных готовы для анализа.

Процесс обучения: детектор переобучения в действии

CatBoost обучается на первых семидесяти процентах данных — пятисот сорока восьми неделях — и тестируется на оставшихся тридцати процентах, это двести тридцать пять недель. Модель быстро достигает пика качества на итерации 201 с AUC 0.907, затем детектор переобучения отслеживает ухудшение и останавливает процесс на сто пятидесятой итерации. Финальная модель состоит из двухсот двух деревьев решений — минималистичная архитектура, которая избежала переобучения.

Метрики качества: что говорят числа

Чтобы понять, насколько хорошо модель научилась предсказывать сильные движения EUR/USD, смотрим на метрики тестовой выборки.

Shrink model to first 202 iterations.

Accuracy: 0.851
AUC Score: 0.907

Classification Report:
                    precision    recall  f1-score   support

Decline/Stagnation       0.90      0.92      0.91       197
            Growth       0.55      0.47      0.51        38

          accuracy                           0.85       235
         macro avg       0.72      0.70      0.71       235
      weighted avg       0.84      0.85      0.85       235

Финальные метрики на тестовой выборке превосходят все ожидания.

Точность составила восемьдесят пять целых одну десятую процента. AUC Score достиг ноля целых девятисот семи тысячных — это уже не случайное угадывание, это работающая предсказательная модель! Отчёт по классификации показывает драматическое улучшение.

Для класса падения и стагнации precision составляет 0.90, recall 0.92, поддержка сто девяносто семь недель. Модель отлично определяет периоды слабого движения. Для класса роста precision достиг 0.55, recall 0.47, поддержка тридцать восемь недель. Это уже не девятнадцать процентов, как в первоначальных тестах — модель научилась ловить сильные восходящие движения с приличной точностью!

Общая точность восемьдесят пять процентов, взвешенное среднее по всем метрикам тоже восемьдесят пять процентов. Макро-средние показывают баланс: precision 0.72, recall 0.70, f1-score 0.71.

AUC 0.907 говорит сам за себя — модель обнаружила устойчивые закономерности в данных. Она не просто запомнила обучающую выборку, она научилась различать паттерны, которые работают на новых, ранее не виденных данных.

Точность восемьдесят пять процентов означает, что из каждых ста недель модель правильно классифицирует восемьдесят пять. Для класса роста precision 0.55 означает: когда модель предсказывает сильное восходящее движение, она права в пятидесяти пяти процентах случаев. 

Recall 0.47 для класса роста показывает, что модель находит почти половину всех действительно сильных недель. Она пропускает часть возможностей, но те сигналы, которые она генерирует, достаточно надёжны для практического использования.

Что изменилось? Теперь посмотрим на важность признаков, чтобы понять, какие факторы модель считает самыми информативными.

Top 15 Important Features:
               feature  importance
32                body   28.818274
82  lag_13_price_range    3.715878
60        lag_4_return    2.789399
50        lag_2_return    2.721862
23          solar_cos2    2.481633
22          solar_sin2    2.240648
70        lag_8_return    2.063927
61    lag_4_volatility    1.895090
51    lag_2_volatility    1.852277
80       lag_13_return    1.788907
81   lag_13_volatility    1.662764
6      moon_phase_cos4    1.629020
53    lag_4_moon_angle    1.571409
40        lag_1_return    1.570028
41    lag_1_volatility    1.560117

Важность признаков: что видит модель

Таблица важности признаков преподносит сюрприз.

Самый важный признак — body с весом двадцать девять процентов! Это размер тела свечи, отношение абсолютной разницы между ценой открытия и закрытия к цене закрытия. Технический индикатор, не имеющий никакого отношения к астрологии, захватил почти треть всего внимания модели.

На втором месте lag_13_price_range с четырьмя процентами — ценовой диапазон тринадцать недель назад, это три месяца в прошлое. На третьем месте lag_4_return с тремя процентами — доходность месяц назад. На четвёртом lag_2_return — доходность две недели назад.

Интересно, что астрологические признаки не исчезли полностью. На пятом и шестом местах solar_cos2 и solar_sin2 — вторая гармоника солнечного цикла с важностью по два с половиной процента каждая. Модель уловила полугодовые сезонные эффекты, связанные с вращением Земли вокруг Солнца.

Лунные признаки присутствуют, но не доминируют. moon_phase_cos4 занял двенадцатое место с важностью полтора процента. Это косинус четвёртой гармоники лунной фазы — тот же класс признаков, который был лидером в упрощённой модели, но теперь его затмили технические индикаторы.

Модель переплетает три типа информации: технические характеристики свечей, лаги доходности и волатильности, астрономические циклы. Но иерархия факторов оказалась неожиданной — техника важнее астрологии, память рынка важнее небесных ритмов.

Тем не менее, присутствие solar_cos2, solar_sin2 и moon_phase_cos4 в топ-пятнадцати признаков подтверждает: астрономические циклы вносят вклад в предсказательную силу модели. Они не главные драйверы, но они статистически значимы и улучшают качество прогноза.

Статистика анализа: итоговые цифры

Подводим итоги числового анализа за весь исследуемый период.

Период анализа: семьсот восемьдесят две недели реальных торгов EUR/USD. Средняя недельная доходность составила минус ноль целых тридцать шесть тысячных процента — лёгкий отрицательный дрейф за пятнадцать лет. Волатильность один целых сто семьдесят девять тысячных процента. Порог значимого роста ноль целых восемьдесят девять десятитысячных.

Точность модели машинного обучения — ноль целых восемьсот пятьдесят одна тысячная. Улучшение над базовым уровнем составило плюс шесть целых три десятых процента. Это означает, что модель действительно научилась чему-то полезному, а не просто угадывает по частоте классов.

Базовый уровень для несбалансированной выборки — это точность, которую даёт стратегия «всегда предсказывать самый частый класс». Если восемьдесят четыре процента недель — это падение или стагнация, то тупое угадывание дало бы точность 0.84. Модель достигла 0.851 — превзошла наивную стратегию на шесть с лишним процентов.

Шесть процентов улучшения может показаться скромным числом. Но в мире количественных финансов, где каждая десятая процента точности стоит миллионы долларов потенциальной прибыли, это серьёзное достижение.

Сухие цифры дают общую картину, но лучше оценить все визуально.

Интерпретация результатов

Чтобы понять, как модель принимает решения, нужно посмотреть на распределение её предсказаний во времени и связь с астрономическими циклами.


Первый график показывает динамику цены EUR/USD за пятнадцать лет. Видны все крупные движения: укрепление евро до 2014 года, обвал после долгового кризиса, стабилизация в последние годы. График цены служит основой для понимания контекста всех дальнейших анализов.

Второй график отображает угол лунной фазы от нуля до трёхсот шестидесяти градусов. Красная пунктирная линия на нуле отмечает новолуние, синяя пунктирная на ста восьмидесяти — полнолуние. График показывает регулярные синусоидальные колебания с периодом около тридцати дней, соответствующим синодическому месяцу.

Третий график сравнивает фактические сильные движения с предсказаниями модели на тестовом периоде. Синяя сплошная линия показывает реальные недели роста — единица означает сильное восходящее движение, ноль означает падение или стагнацию. Красная пунктирная линия — прогнозы алгоритма.

Видно существенное совпадение между синей и красной линиями. Модель не идеальна — она пропускает некоторые пики и иногда генерирует ложные сигналы. Но общая корреляция очевидна. Когда появляется группа реальных сильных недель, модель часто успевает их поймать. Когда рынок входит в период спокойствия, модель правильно воздерживается от прогнозов роста.

Синяя заливка под графиком фактических движений помогает визуально оценить плотность сильных недель в разные периоды. Заметны кластеры активности — моменты, когда рынок генерирует серии мощных движений подряд, и длинные спокойные зоны, где ничего значимого не происходит.

Таким образом, модель действительно научилась распознавать паттерны, предшествующие сильным движениям EUR/USD. Комбинация технических индикаторов, памяти рынка через лаги и астрономических циклов создала работающую предсказательную систему с точностью восемьдесят пять процентов и AUC более девяти десятых.

Анализ доходности и волатильности по фазам Луны

Чтобы глубже понять, как именно лунные циклы влияют на поведение EUR/USD, построим агрегированную статистику по восьми основным фазам Луны за весь пятнадцатилетний период.


Первый график показывает среднюю недельную доходность для каждой фазы Луны. Паттерн чётко виден невооружённым глазом.

Фазы растущей Луны демонстрируют положительную доходность. Waxing gibbous — фаза перед полнолунием — показывает максимальную среднюю доходность около 0.0007, то есть семь сотых процента в неделю. Full moon — само полнолуние — даёт аналогичный результат около 0.0007. First quarter — первая четверть — тоже в положительной зоне около 0.00035.

Новолуние — new moon — находится около нулевой отметки, без выраженного направления. Это точка равновесия, момент неопределённости перед началом нового лунного цикла.

Фазы убывающей Луны показывают смешанную картину. Waning gibbous — фаза сразу после полнолуния — ещё удерживает небольшую положительную доходность около 0.00035. Last quarter падает до 0.0005, но остаётся положительной.

А вот waning crescent — убывающий серп перед новолунием — демонстрирует выраженную отрицательную доходность около минус 0.0005, то есть минус пять сотых процента в неделю. Это самая негативная фаза для EUR/USD за весь цикл.

First quarter в начале растущей Луны показывает отрицательную доходность около минус 0.00035 — это аномалия в общем паттерне, возможно связанная со статистическим шумом или особенностями конкретных исторических периодов.


Второй график отображает среднюю волатильность — абсолютное значение доходности — по фазам Луны. Здесь паттерн менее выраженный, но тоже различимый.

Максимальная волатильность наблюдается в четырёх фазах: new moon около 0.042, waxing gibbous около 0.045, full moon около 0.043, waning crescent около 0.041. Это критические точки лунного цикла — новолуние, полнолуние и фазы непосредственно перед ними. В эти моменты рынок наиболее активен, движения более резкие и непредсказуемые.

Минимальная волатильность зафиксирована в фазе last quarter — последняя четверть убывающей Луны — около 0.031. Это самая спокойная фаза цикла, когда рынок замирает в ожидании. Разница между максимумом и минимумом составляет около тридцати процентов — статистически значимый эффект.

Waxing crescent и first quarter показывают промежуточные значения около 0.036-0.039. Waning gibbous тоже в промежуточной зоне около 0.038.

Эти графики подтверждают исходную гипотезу о поведенческом влиянии Луны. Полнолуние действительно совпадает с периодами повышенной волатильности и положительной средней доходности для EUR/USD. Это соответствует научным данным о росте импульсивности и активности людей в полнолуние — трейдеры становятся агрессивнее, объёмы торговли растут, движения усиливаются.

Убывающий серп перед новолунием — waning crescent — демонстрирует как высокую волатильность, так и отрицательную доходность. Возможное объяснение: в этот период нарастает тревожность из-за недостатка лунного света ночью, качество сна ухудшается, трейдеры становятся более осторожными и пессимистичными. Результат — отток капитала из рисковых позиций и падение евро относительно доллара.

Последняя четверть — last quarter — самая спокойная фаза с минимальной волатильностью. Это период стабилизации после бурного полнолуния, когда рынок восстанавливается и консолидируется перед следующим циклом.

Важно подчеркнуть: эффекты слабые по абсолютной величине. Разница между лучшей и худшей фазой составляет около 0.0012, то есть двенадцать сотых процента в неделю. На фоне средней волатильности 1.179 процента — это всего один процент от типичного недельного движения. Но за год накопительный эффект может составить несколько процентов доходности — заметная величина для долгосрочного инвестора.

Эти графики объясняют, почему модель машинного обучения уловила лунные гармоники, но не сделала их доминирующими признаками. Сигнал существует, он систематический и воспроизводимый, но он тонкий. Технические индикаторы вроде размера тела свечи дают более сильный и надёжный сигнал. Лунные фазы работают как вспомогательный фактор, который добавляет несколько процентов точности к базовой технической модели.

Более того, вспомним исходную гипотезу про контрастные пары. EUR/USD — это две стабильные резервные валюты. Если даже на такой сбалансированной паре лунные циклы дают измеримый эффект в доходности и волатильности, что будет на экзотических парах вроде AUD/JPY? Там контраст между риск-валютой и валютой-убежищем усилит поведенческие паттерны, и графики по фазам Луны должны показать гораздо более выраженную амплитуду колебаний.

Итак, картина проясняется. Лунные циклы действительно влияют на EUR/USD, но их вклад ограничен природой самой пары. Однако даже этого слабого сигнала оказалось достаточно, чтобы модель достигла впечатляющих результатов.

Роль астрологии в модели

Результаты ставят астрологические переменные на правильное место в иерархии предсказательных факторов. Главные драйверы движения EUR/USD — технические характеристики свечей и краткосрочная память рынка.

Признак body с весом 29% показывает: текущая динамика важнее небесных циклов. Однако астрономические признаки статистически значимы. Вторая гармоника солнечного цикла — solar_cos2 и solar_sin2 — на пятом и шестом местах с важностью около 2,5% каждая.

Четвёртая гармоника лунной фазы — moon_phase_cos4 — на двенадцатом месте с важностью 1,5%. Это недельные колебания внутри лунного месяца.

Статистическая значимость астрономических факторов

Если бы астрология была полной ерундой, CatBoost проигнорировал бы эти признаки. Но модель выбрала сразу несколько астрономических переменных — именно те гармоники, которые теоретически должны работать. Совокупный вклад астрологических признаков в топ-15 составляет около 6%. Это не ноль, но и не 30-50%. Это заметная добавка к предсказательной силе, которая обеспечивает итоговый AUC 0.907 и точность 85%. Астрономические циклы — это специи в рецепте модели машинного обучения. Не основа, но важное дополнение.

Графики по фазам Луны показали слабые эффекты — разница около 0,12% в неделю. Но модель не смотрит на фазы изолированно. Она комбинирует лунные гармоники с размером тела свечи, лагами ценового диапазона, импульсом доходности и солнечными циклами. Каждый признак по отдельности даёт слабый сигнал, но вместе они создают мощный синергетический эффект. Именно поэтому модель достигла 85% точности.

Вспомните исходную гипотезу о контрастных валютных парах. EUR/USD — это пара двух стабильных резервных валют с минимальной разницей в риск-аппетите (0,3). Если даже на такой сбалансированной паре астрологические эффекты дают 6% важности, что будет на экзотических парах вроде AUD/JPY с полутора пунктами контраста? Там солнечные и лунные циклы могут составить серьёзную конкуренцию техническим индикаторам.

Ключевой вывод: для проверки полной силы астрологической гипотезы нужны пары с максимальным психологическим контрастом.

Эксперимент продолжается

Астрономические циклы заняли своё место в иерархии факторов — не на вершине, но в статистически значимой роли. Солнечные гармоники и лунные фазы вносят вклад около 6% в предсказательную силу модели. Код стабилен, интеграция с MetaTrader 5 работает безупречно. Любой может повторить эксперимент. Методология открыта, результаты воспроизводимы. Направления дальнейших исследований Куда двигаться дальше?

Первое направление — тестирование на контрастных валютных парах (AUD/JPY, CAD/JPY, NZD/CHF), где астрономические эффекты должны проявиться сильнее.

Второе направление — расширение астрономической модели. Добавить циклы Юпитера (12 лет — совпадает с экономическими циклами), Сатурна (29 лет — поколенческий цикл), Венеры (8 лет).

Можно усложнить модель, добавив расчёт аспектов между планетами. Третье направление — оптимизация торговой стратегии. Модель предсказывает вероятность движения, но не даёт прямых сигналов. Нужно разработать правила входа, стоп-лоссов, учесть транзакционные издержки. Будем честными: это не Грааль торговли. Но это работающий исследовательский инструмент, который доказал состоятельность на 15 годах реальных данных.

Последнее слово скептикам

Я понимаю, что многие отнесутся к этой статье со скептицизмом. И это правильная реакция. Но настоящий скептицизм не означает автоматическое отрицание необычных идей.

Это требование убедительных доказательств, воспроизводимых экспериментов, прозрачной методологии. Я предлагаю математически строгую проверку гипотезы о влиянии астрономических циклов на валютные рынки. Проверку на реальных данных за 15 лет с открытым исходным кодом.

Луна продолжает свой танец вокруг Земли. Земля кружится вокруг Солнца. Планеты вычерчивают орбиты согласно уравнениям Кеплера и Ньютона. А на экранах миллионов трейдеров японские свечи рисуют свой танец цен — танец человеческих эмоций, страхов и надежд.

Может быть, эти два танца — небесный и земной — связаны тонкими нитями причинности? Может быть, древние астрологи интуитивно нащупали реальную закономерность? Может быть, пришло время это проверить строгими методами анализа данных, без предубеждений и догм?



Прикрепленные файлы |
EURUSD_Astro.py (23.61 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (1)
Stanislav Korotky
Stanislav Korotky | 21 окт. 2025 в 10:24

я начал с определения астрономических констант в коде

Это не астрономические, а астрологические константы. Почувствуйте разницу!

Автоматизация торговых стратегий на MQL5 (Часть 5): Разработка стратегии Adaptive Crossover RSI Trading Suite Автоматизация торговых стратегий на MQL5 (Часть 5): Разработка стратегии Adaptive Crossover RSI Trading Suite
В этой статье мы разработаем систему Adaptive Crossover RSI Trading Suite, которая использует пересечения скользящих средних с периодами 14 и 50 в качестве сигналов, подтверждаемых фильтром RSI с периодом 14. Система включает в себя фильтр торговых дней, стрелки сигналов с пояснениями и дашборд для мониторинга в реальном времени. Такой подход обеспечивает точность и адаптивность автоматической торговли.
Автоматизация торговых стратегий на MQL5 (Часть 16): Пробой полуночного диапазона посредством ценового действия Прорыв структуры (BoS) Автоматизация торговых стратегий на MQL5 (Часть 16): Пробой полуночного диапазона посредством ценового действия Прорыв структуры (BoS)
В настоящей статье мы автоматизируем пробой полуночного диапазона с помощью стратегии прорыва структуры на MQL5, подробно описывая код для обнаружения пробоя и исполнения сделок. Определяем точные параметры риска для входа, стоп-ордеров и прибыли. Тестирование на истории и оптимизация включены для практической торговли.
Выборочные методы MCMC — Алгоритм Метрополиса-Гастингса Выборочные методы MCMC — Алгоритм Метрополиса-Гастингса
Алгоритм Метрополиса-Гастингса — фундаментальный метод Монте-Карло по схеме марковских цепей (MCMC), широко применяемый для аппроксимации апостериорных распределений в байесовском выводе. Статья описывает теоретические основы алгоритма, реализацию класса MHSampler на MQL5 и примеры применения с анализом полученных выборок.
Нейросети в трейдинге: Адаптивное восприятие рыночной динамики (STE-FlowNet) Нейросети в трейдинге: Адаптивное восприятие рыночной динамики (STE-FlowNet)
Фреймворк STE-FlowNet открывает новый взгляд на анализ финансовых данных, реагируя на реальные события рынка, а не на фиксированные таймфреймы. Его архитектура сохраняет локальные и временные зависимости, позволяя отслеживать даже мелкие импульсы в динамике цен.