Análisis de la influencia de los ciclos solares y lunares en los tipos de cambio
Imagine a un trader con treinta años de experiencia que cada mañana consulta no solo los gráficos, sino también el calendario lunar. Nunca se lo confesará a sus compañeros porque teme que se burlen de él. Sin embargo, sus estadísticas de trading revelan una extraña pauta: en determinadas fases lunares, la exactitud de sus predicciones aumenta un veinte por ciento. ¿Una coincidencia? Quizás. O quizá no.
La Luna, el Sol y la psicología del mercado
El análisis técnico se ha quedado estancado en el pasado: el RSI, el MACD, las medias móviles… todo sigue siendo igual que hace 40 años. Incluso el aprendizaje automático utiliza las mismas velas y barras. Observamos un mapa antiguo a través de un nuevo microscopio.
Mientras tanto, los estudios muestran que la Luna y el Sol influyen no solo en la naturaleza, sino también en las personas y, por lo tanto, en los mercados.
La Luna controla las mareas, y el cuerpo humano está compuesto en un 70 % por agua. Diferentes investigaciones señalan un aumento de las consultas psiquiátricas y un empeoramiento del sueño durante la luna llena. Durante esa fase, los niveles de melatonina bajan y aumenta la ansiedad, por lo que los traders se vuelven más impulsivos. La luna nueva, por el contrario, les hace sentirse más tranquilos.
Los ciclos solares tienen un efecto diferente. La falta de luz en invierno provoca apatía y reduce la propensión al riesgo; en primavera y verano, el ánimo y el optimismo aumentan, al igual que los mercados. Los estudios confirman la correlación entre la duración del día y la rentabilidad de las acciones. Las tormentas geomagnéticas aumentan el estrés, los errores y la volatilidad.
La influencia actúa por niveles: bioquímica → estado de ánimo → comportamiento → movimientos del mercado. Puede que una sola persona no note el efecto, pero millones de reacciones sincronizadas generan fluctuaciones en los precios.
Incluso el legendario trader W. D. Gann tenía en cuenta los ciclos astrológicos en el trading. Sus métodos son complejos e imposibles de formalizar, pero los resultados eran impresionantes.
¿Quizá sea precisamente en estos ritmos donde se encuentre la variable que le falta al mercado?
Cuando Python se encuentra con el zodíaco
¿Y si tomáramos los conceptos astrológicos y los trasladáramos al lenguaje de la ciencia de datos moderna? Fue precisamente esta idea la que me entusiasmó hace unos meses. El mes sinódico dura 29,530588 días, y el año tropical, 365,25636 días. Estos ciclos existían mucho antes de la aparición del bitcoin y seguirán existiendo durante millones de años. Son estables, predecibles y pueden describirse con precisión mediante fórmulas matemáticas.
Al crear el sistema, empecé por definir las constantes astronómicas en el código:
class UniversalForexAstro: def __init__(self, pair_name="USDCAD"): self.pair_name = pair_name # Ciclos astronómicos self.lunar_cycle = 29.530588 # Mes sinódico self.solar_cycle = 365.25636 # Tropical year # Fechas de referencia para las distintas divisas self.birth_dates = { 'USD': datetime(1792, 4, 2), # Dólar estadounidense 'EUR': datetime(1999, 1, 1), # Euro 'GBP': datetime(1694, 7, 27), # Libra esterlina 'JPY': datetime(1871, 5, 10), # Yen japonés 'CHF': datetime(1850, 5, 7), # Franco suizo 'CAD': datetime(1858, 8, 2), # Dólar canadiense 'AUD': datetime(1966, 2, 14), # Dólar australiano 'NZD': datetime(1967, 7, 10), # Dólar neozelandés }
Cada moneda tiene su «fecha de nacimiento»: el momento en que se pone oficialmente en circulación. El dólar estadounidense nació el 2 de abril de 1792. El euro nació el 1 de enero de 1999. No se trata simplemente de hechos históricos, sino que constituyen el punto de referencia para todos los cálculos cíclicos.
La arquitectura de la inteligencia celestial
Las distintas divisas tienen características diferentes. El dólar australiano y el dólar neozelandés son divisas vinculadas a las materias primas, estrechamente relacionadas con los precios de los metales y los productos agrícolas. El yen japonés y el franco suizo son divisas refugio a las que acuden los inversores en momentos de pánico. He codificado estas características en forma de coeficientes numéricos:
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},
} Ahora imagine que la Luna entra en la fase de luna nueva. Para el par AUD/JPY esto significa una cosa, mientras que para el EUR/USD significa otra totalmente distinta. El dólar australiano es una divisa de riesgo con un coeficiente de 0,8, mientras que el yen es una divisa refugio con un coeficiente de -0,8. ¡Una diferencia de un punto y medio! El sistema tiene en cuenta estas interrelaciones a través de las diferencias en las características de las divisas.
Cálculo de la fase lunar: las matemáticas del cielo
El núcleo del sistema es el método de cálculo del ángulo de la fase lunar. El código es elegante en su sencillez:
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
Tomamos el número de días transcurridos desde la fecha de nacimiento de la divisa, aplicamos la operación módulo con la duración del ciclo lunar para obtener la posición en el ciclo y la multiplicamos por trescientos sesenta grados. Hacemos lo mismo para el ciclo solar. La diferencia da como resultado el ángulo de fase. Cero grados: luna nueva; ciento ochenta: luna llena. No hay nada de magia, solo trigonometría.
La danza de los armónicos
Pero no basta con determinar simplemente la fase de la luna. Las influencias celestes actúan a través de los armónicos: oscilaciones periódicas de diferentes frecuencias que se superponen entre sí. No solo calculo la fase básica de la luna, sino también sus armónicos:
# Características lunares 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))
Cada armónico contiene su propia información. El primer armónico determina el ciclo principal de subida y bajada. El segundo armónico capta los efectos trimestrales. El cuarto capta las oscilaciones semanales dentro del mes lunar. Seis números describen por completo el estado actual del ciclo lunar.
Efectos lunares en los pares de divisas
Lo más interesante reside en el método para calcular la influencia lunar sobre un par de divisas concreto:
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 # Las divisas base y de cotización reaccionan de forma diferente 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}) # La diferencia en las características determina la intensidad del efecto risk_diff = base_char['risk_appetite'] - quote_char['risk_appetite'] commodity_diff = base_char['commodity_correlation'] - quote_char['commodity_correlation'] # Efectos de fase if phase_name in ['new_moon', 'full_moon']: # Fases críticas: alta volatilidad effect += np.random.choice([-0.015, 0.015]) * (1 + abs(risk_diff)) elif phase_name in ['waxing_crescent', 'first_quarter', 'waxing_gibbous']: # La luna creciente es favorable para las divisas de riesgo y las divisas vinculadas a las materias primas effect += 0.003 * risk_diff + 0.002 * commodity_diff elif phase_name in ['waning_gibbous', 'last_quarter', 'waning_crescent']: # La fase de luna menguante tiene un efecto negativo sobre las divisas de riesgo effect -= 0.003 * risk_diff + 0.002 * commodity_diff # Armónicos 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
El código aplica la lógica astrológica a través de las matemáticas. En las fases críticas (luna nueva, luna llena), la volatilidad aumenta de forma proporcional a la diferencia entre las propensiones al riesgo de las divisas. La fase de luna creciente favorece a las divisas de riesgo y a las divisas vinculadas a las materias primas. La fase de luna menguante tiene el efecto contrario. Los armónicos aportan sutiles oscilaciones relacionadas con las características específicas del par.
La memoria del tiempo a través de los retardos
Los mercados tienen memoria. Lo que ocurrió hace una semana tiene repercusiones en el día de hoy. Por ello, el sistema tiene en cuenta las características con retardo:
self.lag_periods = [1, 2, 4, 8, 13] # Características con retardo 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 # Retardos del precio features[f'lag_{lag}_return'] = df.iloc[i - lag]['return'] features[f'lag_{lag}_volatility'] = df.iloc[i - lag]['volatility']
¿Dónde estaba la Luna hace una semana? ¿Hace dos semanas? ¿Hace cuatro, ocho o trece semanas? El sistema genera ochenta y ocho características para cada instante: un retrato multidimensional del momento, en el que el pasado y el presente del cielo se entrelazan con el comportamiento de las divisas.
Clasificación binaria: simplificamos el problema
Predecir el precio exacto es una tarea ingrata. Pero responder a la pregunta «¿habrá un fuerte movimiento al alza o no?» sí es factible:
def create_binary_target(self, df, threshold_percentile=60): """Binary target variable""" returns = df['return'].values # Umbral adaptativo basado en el percentil threshold = np.percentile(np.abs(returns), threshold_percentile) binary_target = [] for ret in returns: if ret > threshold: binary_target.append(1) # Crecimiento else: binary_target.append(0) # Descenso/estancamiento return binary_target, threshold
El umbral de movimiento significativo se determina a partir del percentil 60 del valor absoluto de la rentabilidad. Este enfoque genera una muestra equilibrada y centra el modelo en los movimientos que realmente son significativos.
CatBoost contempla las estrellas
Para la clasificación se utiliza CatBoost, un método de «gradient boosting» con soporte para características categóricas:
def train_binary_model(self, features_df, binary_target): """Train binary model""" print(f"\n=== TRAINING BINARY MODEL FOR {self.pair_name} ===") # Características categóricas cat_features = [col for col in features_df.columns if col.startswith('is_')] # División basada en el tiempo 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))
Los datos se dividen cronológicamente: el primer setenta por ciento se destina al entrenamiento y el último treinta por ciento, a la prueba. Esto es de vital importancia: no podemos aprender del futuro, sino solo del pasado.
Resultados del EUR/USD: primeros hallazgos
El sistema se conecta al terminal MetaTrader 5 y descarga los datos históricos reales de cotizaciones del EUR/USD de los últimos quince años. Las barras semanales contienen los precios de apertura, máximo, mínimo y cierre, lo que ofrece una visión completa de la evolución de la divisa desde 2010 hasta 2025.
Iniciamos el análisis del par EUR/USD, indicando el periodo y el marco temporal semanal. El sistema muestra el resultado de la conexión: MetaTrader 5 se ha inicializado correctamente y se han cargado 782 barras semanales desde el 4 de enero de 2010 hasta el 30 de diciembre de 2024. Se han procesado los datos y se han creado ochenta y ocho características astrológicas y técnicas para cada semana.
El umbral de crecimiento significativo se ha fijado en el 0,78 %: solo los movimientos semanales más fuertes se incluyen en la clase de crecimiento. Esto supone solo el veintitrés por ciento del total de la muestra, lo que proporciona un buen equilibrio para el entrenamiento del modelo. Setecientas ochenta y tres semanas de datos reales del mercado están listas para el análisis.
Proceso de entrenamiento: el detector de sobreajuste en acción
CatBoost se entrena con el primer setenta por ciento de los datos —quinientas cuarenta y ocho semanas— y se evalúa con el treinta por ciento restante, es decir, doscientas treinta y cinco semanas. El modelo alcanza rápidamente su máximo nivel de calidad en la iteración 201, con un AUC de 0,907; a continuación, el detector de sobreajuste detecta un empeoramiento y detiene el proceso en la iteración 150. El modelo final está compuesto por doscientos dos árboles de decisión: una arquitectura minimalista que ha evitado el sobreajuste.
Métricas de calidad: lo que dicen las cifras
Para comprender hasta qué punto el modelo ha aprendido a predecir los movimientos fuertes del EUR/USD, analizamos las métricas de la muestra de prueba.
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
Las métricas finales obtenidas en la muestra de prueba superan todas las expectativas.
La exactitud fue del 85,1 %. El AUC ha alcanzado un valor de 0,907: ¡ya no se trata de adivinar al azar, sino de un modelo predictivo que funciona! El informe sobre la clasificación muestra una mejora espectacular.
Para la clase de caída y estancamiento, la precisión es de 0,90, el recall es de 0,92 y el soporte es de ciento noventa y siete semanas. El modelo identifica muy bien los periodos de escaso movimiento del precio. Para la clase de crecimiento, la precisión alcanzó el 0,55, el recall el 0,47 y el soporte fue de treinta y ocho semanas. Ya no es un 19 %, como en las pruebas iniciales: ¡el modelo ha aprendido a detectar fuertes movimientos alcistas con bastante exactitud!
La exactitud global es del 85 %, y la media ponderada de todas las métricas también es del 85 %. Los promedios macro muestran un equilibrio: precisión 0,72, recall 0,70 y puntuación F1 0,71.
Un AUC de 0,907 habla por sí solo: el modelo ha detectado patrones consistentes en los datos. No solo memorizó el conjunto de entrenamiento, sino que aprendió a distinguir patrones que funcionan con datos nuevos, que no había visto antes.
La exactitud del 85 % significa que, de cada cien semanas, el modelo clasifica correctamente ochenta y cinco. En lo que respecta a la clase de crecimiento, una precisión de 0,55 significa que, cuando el modelo predice un fuerte movimiento alcista, acierta en el cincuenta y cinco por ciento de los casos.
El recall de 0,47 para la clase de crecimiento indica que el modelo detecta casi la mitad de todas las semanas realmente fuertes. Aunque deja pasar algunas oportunidades, las señales que genera son lo suficientemente fiables como para su uso práctico.
¿Qué ha cambiado? Ahora analizaremos la importancia de las características para comprender qué factores considera el modelo que son los más informativos.
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
La importancia de las características: lo que ve el modelo
La tabla de importancia de las características nos depara una sorpresa.
¡La característica más importante es «body», con un peso del veintinueve por ciento! Es el tamaño del cuerpo de la vela, es decir, la diferencia absoluta entre el precio de apertura y el de cierre dividida por el precio de cierre. Un indicador técnico, que no tiene nada que ver con la astrología, acaparó casi un tercio de toda la atención del modelo.
En segundo lugar se sitúa «lag_13_price_range», con un cuatro por ciento: el rango de precios de hace trece semanas, es decir, tres meses atrás. En tercer lugar se sitúa lag_4_return, con un 3 %: la rentabilidad de hace un mes. En cuarto lugar, «lag_2_return»: la rentabilidad de hace dos semanas.
Es curioso que las características astrológicas no hayan desaparecido por completo. En quinto y sexto lugar se encuentran solar_cos2 y solar_sin2, el segundo armónico del ciclo solar, con una importancia del dos y medio por ciento cada una. El modelo ha captado los efectos estacionales semestrales relacionados con la traslación de la Tierra alrededor del Sol.
Las características lunares están presentes, pero no predominan. moon_phase_cos4 ocupó el duodécimo puesto, con una importancia del 1,5 %. Se trata del coseno de el cuarto armónico de la fase lunar: la misma clase de características que era la más destacada en el modelo simplificado, pero que ahora ha quedado eclipsada por los indicadores técnicos.
El modelo combina tres tipos de información: las características técnicas de las velas, los retardos de la rentabilidad y la volatilidad, y los ciclos astronómicos. Pero la jerarquía de los factores resultó ser inesperada: el análisis técnico es más importante que la astrología, y la memoria del mercado es más importante que los ritmos celestes.
No obstante, la presencia de solar_cos2, solar_sin2 y moon_phase_cos4 entre las quince características principales confirma que los ciclos astronómicos contribuyen al poder predictivo del modelo. No son los principales factores determinantes, pero son estadísticamente significativos y mejoran la calidad de la previsión.
Las estadísticas del análisis: las cifras finales
Resumimos los resultados del análisis numérico correspondiente a todo el periodo estudiado.
Periodo de análisis: setecientas ochenta y dos semanas de operaciones reales del par EUR/USD. La rentabilidad media semanal fue del −0,036 %: una ligera deriva negativa a lo largo de quince años. La volatilidad es del 1,179 %. El umbral de crecimiento significativo es de 0,0089.
La exactitud del modelo de aprendizaje automático es de 0,851. La mejora con respecto al nivel de referencia fue del +6,3 %. Esto significa que el modelo realmente ha aprendido algo útil y no se limita a adivinar basándose en la frecuencia de las clases.
El nivel de referencia para una muestra desequilibrada es la exactitud que ofrece la estrategia de «predecir siempre la clase más frecuente». Si el 84 % de las semanas se caracterizan por una caída o un estancamiento, entonces una predicción ingenua daría una exactitud de 0,84. El modelo alcanzó un 0,851, superando a la estrategia ingenua en algo más del seis por ciento.
Una mejora del seis por ciento puede parecer una cifra modesta. Pero en el mundo de las finanzas cuantitativas, donde cada décima de punto porcentual de exactitud supone millones de dólares de beneficios potenciales, se trata de un logro importante.
Las cifras por sí solas ofrecen una visión general, pero es mejor evaluarlo todo de forma visual.
Interpretación de los resultados
Para comprender cómo toma decisiones el modelo, hay que analizar la distribución de sus predicciones a lo largo del tiempo y su relación con los ciclos astronómicos.

El primer gráfico muestra la evolución del tipo de cambio EUR/USD a lo largo de quince años. Se aprecian todos los grandes movimientos: el fortalecimiento del euro hasta 2014, la caída tras la crisis de la deuda y la estabilización en los últimos años. El gráfico de precios sirve de base para comprender el contexto de todos los análisis posteriores.
El segundo gráfico muestra el ángulo de la fase lunar desde cero hasta trescientos sesenta grados. La línea discontinua roja en cero grados indica la luna nueva, y la línea discontinua azul en ciento ochenta grados, la luna llena. El gráfico muestra oscilaciones sinusoidales regulares con un periodo de unos treinta días, que se corresponde con el mes sinódico.
El tercer gráfico compara los movimientos significativos reales con las predicciones del modelo durante el periodo de prueba. La línea continua azul muestra las semanas en las que realmente hubo subidas: el número 1 indica un fuerte movimiento alcista, mientras que el 0 indica una caída o un estancamiento. La línea roja discontinua representa las predicciones del algoritmo.
Podemos apreciar una coincidencia significativa entre las líneas azul y roja. El modelo no es perfecto: pasa por alto algunos picos y, en ocasiones, genera señales falsas. Pero la correlación general es evidente. Cuando se produce una racha de semanas realmente fuertes, el modelo suele ser capaz de detectarlas. Cuando el mercado entra en un periodo de calma, el modelo se abstiene, acertadamente, de pronosticar subidas.
El relleno azul que aparece debajo del gráfico de movimientos reales ayuda a evaluar visualmente la densidad de semanas fuertes en los distintos periodos. Se observan grupos de actividad —momentos en los que el mercado genera series de fuertes movimientos consecutivos— y largos periodos de calma en los que no ocurre nada significativo.
Por ello, el modelo realmente ha aprendido a reconocer los patrones que preceden a los movimientos pronunciados del EUR/USD. La combinación de indicadores técnicos, la memoria del mercado a través de los retardos y los ciclos astronómicos ha dado lugar a un sistema predictivo eficaz con una exactitud del ochenta y cinco por ciento y un AUC superior a nueve décimas.
Análisis de la rentabilidad y la volatilidad según las fases lunares
Para comprender mejor cómo influyen exactamente los ciclos lunares en la evolución del EUR/USD, elaboraremos unas estadísticas agregadas sobre las ocho fases principales de la Luna a lo largo de todo el periodo de quince años.

El primer gráfico muestra la rentabilidad media semanal para cada fase lunar. El patrón se aprecia claramente a simple vista.
Las fases de luna creciente muestran una rentabilidad positiva. La fase de luna gibosa creciente —la fase previa a la luna llena— presenta una rentabilidad media máxima de alrededor de 0,0007, es decir, siete centésimas de un uno por ciento a la semana. La luna llena —la luna llena propiamente dicha— da un resultado similar, de aproximadamente 0,0007. First quarter —cuarto creciente— también se sitúa en terreno positivo, en torno a 0,00035.
La luna nueva —new moon— se encuentra cerca del punto cero, sin una dirección definida. Es el punto de equilibrio, el momento de incertidumbre antes del inicio de un nuevo ciclo lunar.
Las fases de luna menguante presentan un panorama mixto. La fase gibosa menguante —la fase inmediatamente posterior a la luna llena— sigue manteniendo una pequeña rentabilidad positiva de alrededor de 0,00035. En el cuarto menguante, la rentabilidad cae hasta 0,0005, pero sigue siendo positiva.
Por su parte, waning crescent —la fase de luna menguante previa a la luna nueva— presenta una rentabilidad negativa pronunciada de alrededor de -0,0005, es decir, menos cinco centésimas por ciento a la semana. Esta es la fase más negativa para el EUR/USD en todo el ciclo.
El cuarto creciente, al inicio de la luna creciente, muestra una rentabilidad negativa de aproximadamente -0,00035; se trata de una anomalía en el patrón general, posiblemente relacionada con el ruido estadístico o con las particularidades de determinados periodos históricos.

El segundo gráfico muestra la volatilidad media —el valor absoluto de la rentabilidad— según las fases lunares. Aquí el patrón es menos marcado, pero también se aprecia.
La volatilidad máxima se observa en cuatro fases: luna nueva, alrededor de 0,042; luna gibosa creciente, alrededor de 0,045; luna llena, alrededor de 0,043; y fase de luna menguante, alrededor de 0,041. Se trata de los momentos clave del ciclo lunar: la luna nueva, la luna llena y las fases que las preceden inmediatamente. En esos momentos, el mercado está más activo y los movimientos son más bruscos e impredecibles.
La volatilidad mínima se registró en la fase de cuarto menguante (last quarter), en torno a 0,031. Es la fase más tranquila del ciclo, en la que el mercado se queda a la espera. La diferencia entre el máximo y el mínimo es de aproximadamente un treinta por ciento, lo que supone un efecto estadísticamente significativo.
La fase de luna creciente y el cuarto creciente muestran valores intermedios de entre 0,036 y 0,039. La luna gibosa menguante también se encuentra en la zona intermedia, alrededor de 0,038.
Estos gráficos confirman la hipótesis inicial sobre la influencia de la Luna en el comportamiento. La luna llena coincide efectivamente con periodos de mayor volatilidad y de rentabilidad media positiva para el EUR/USD. Esto concuerda con los datos científicos que indican un aumento de la impulsividad y la actividad de las personas durante la luna llena: los traders se vuelven más agresivos, los volúmenes de trading aumentan y las fluctuaciones se intensifican.
La fase de luna menguante antes de la luna nueva —waning crescent— muestra tanto una elevada volatilidad como una rentabilidad negativa. Una posible explicación: durante este periodo aumenta la ansiedad debido a la falta de luz lunar por la noche, la calidad del sueño empeora y los traders se vuelven más cautelosos y pesimistas. El resultado es una salida de capitales de las posiciones de riesgo y una caída del euro frente al dólar.
El cuarto menguante —last quarter— es la fase más tranquila, con una volatilidad mínima. Se trata de un periodo de estabilización tras una luna llena agitada, en el que el mercado se recupera y se consolida antes del siguiente ciclo.
Es importante destacar que los efectos son débiles en términos absolutos. La diferencia entre la mejor y la peor fase es de aproximadamente 0,0012, es decir, un 0,12 % semanal. En un contexto de volatilidad media del 1,179 %, esto supone tan solo un 1 % de la fluctuación semanal habitual. Sin embargo, a lo largo de un año, el efecto acumulado puede representar una rentabilidad de varios puntos porcentuales, una cifra significativa para un inversor a largo plazo.
Estos gráficos explican por qué el modelo de aprendizaje automático detectó los armónicos lunares, pero no los convirtió en características dominantes. La señal existe, es sistemática y reproducible, pero es sutil. Los indicadores técnicos, como el tamaño del cuerpo de la vela, ofrecen una señal más fuerte y fiable. Las fases lunares actúan como un factor complementario que añade varios puntos porcentuales de exactitud al modelo técnico básico.
Es más, recordemos la hipótesis inicial sobre los pares de divisas con perfiles de riesgo muy distintos. El EUR/USD está formado por dos divisas de reserva estables. Si incluso en un par tan equilibrado como este los ciclos lunares tienen un efecto cuantificable en la rentabilidad y la volatilidad, ¿qué ocurrirá en pares exóticos como el AUD/JPY? Allí, el contraste entre la divisa de riesgo y la divisa refugio reforzará los patrones de comportamiento, y los gráficos basados en las fases lunares deberían mostrar una amplitud de fluctuación mucho más marcada.
Así pues, el panorama se va aclarando. Los ciclos lunares influyen realmente en el EUR/USD, pero su contribución está limitada por la propia naturaleza del par. Sin embargo, incluso esta débil señal resultó suficiente para que el modelo alcanzara unos resultados impresionantes.
El papel de la astrología en el modelo
Los resultados sitúan las variables astrológicas en el lugar que les corresponde dentro de la jerarquía de factores predictivos. Los principales factores que influyen en la evolución del EUR/USD son las características técnicas de las velas japonesas y la memoria a corto plazo del mercado.
La característica «body», con un peso del 29 %, muestra que la dinámica actual es más importante que los ciclos celestes. Sin embargo, las características astronómicas son estadísticamente significativas. Las características del segundo armónico del ciclo solar —solar_cos2 y solar_sin2— ocupan el quinto y el sexto lugar, con una importancia de alrededor del 2,5 % cada una.
El cuarto armónico de la fase lunar —moon_phase_cos4— ocupa el duodécimo lugar, con una importancia del 1,5 %. Se trata de las oscilaciones semanales dentro del mes lunar.
Significación estadística de los factores astronómicos
Si la astrología fuera una completa tontería, CatBoost habría hecho caso omiso de estas características. Sin embargo, el modelo seleccionó varias variables astronómicas a la vez, precisamente aquellos armónicos que, en teoría, deberían funcionar. La contribución total de las características astrológicas al top 15 es de aproximadamente un 6 %. No es cero, pero tampoco es un 30-50 %. Se trata de una mejora notable en la capacidad predictiva, que proporciona un AUC final de 0,907 y una exactitud del 85 %. Los ciclos astronómicos son la sal y la pimienta de la receta del modelo de aprendizaje automático. No son la base, pero sí un complemento importante.
Los gráficos sobre las fases lunares mostraron efectos débiles: una diferencia de alrededor del 0,12 % a la semana. Sin embargo, el modelo no analiza las fases de forma aislada. Combina los armónicos lunares con el tamaño del cuerpo de la vela, los retardos del rango de precios, el impulso de la rentabilidad y los ciclos solares. Cada característica por sí sola transmite una señal débil, pero juntas generan un potente efecto sinérgico. Precisamente por eso el modelo ha alcanzado una exactitud del 85 %.
Recuerde la hipótesis inicial sobre los pares de divisas contrastantes. El EUR/USD es un par formado por dos monedas de reserva estables con una diferencia mínima en el apetito por el riesgo (0,3). Si incluso en un par tan equilibrado los efectos astrológicos representan un 6 % de la importancia, ¿qué ocurrirá en pares exóticos como el AUD/JPY, con un contraste de un punto y medio? Allí, los ciclos solares y lunares pueden suponer una seria competencia para los indicadores técnicos.
Conclusión clave: para evaluar todo el potencial de la hipótesis astrológica se necesitan pares de divisas con el máximo contraste psicológico.
El experimento continúa
Los ciclos astronómicos han ocupado su lugar en la jerarquía de factores: no en lo más alto, pero sí con un papel estadísticamente significativo. Los armónicos solares y las fases lunares aportan alrededor del 6 % a la capacidad predictiva del modelo. El código es estable y la integración con MetaTrader 5 funciona a la perfección. Cualquiera puede repetir el experimento. La metodología es abierta y los resultados son reproducibles. Líneas de investigación futuras: ¿hacia dónde avanzar?
La primera línea de investigación consiste en realizar pruebas con pares de divisas contrastantes (AUD/JPY, CAD/JPY, NZD/CHF), en los que los efectos astronómicos deberían manifestarse con mayor intensidad.
La segunda línea de investigación es la ampliación del modelo astronómico. Añadir los ciclos de Júpiter (12 años, coincidente con los ciclos económicos), de Saturno (29 años, un ciclo generacional) y de Venus (8 años).
Podemos aumentar la complejidad del modelo añadiendo el cálculo de los aspectos entre los planetas. La tercera línea de investigación es la optimización de la estrategia de trading. El modelo predice la probabilidad de que se produzca un movimiento, pero no ofrece señales directas. Hay que definir reglas de entrada y de colocación de los stop-loss, y tener en cuenta los costes de transacción. Seamos sinceros: esto no es el Santo Grial del trading. Pero se trata de una herramienta de investigación funcional que ha demostrado su validez con datos reales de un periodo de 15 años.
Una última palabra para los escépticos
Entiendo que muchos se mostrarán escépticos ante este artículo. Y esa es la reacción correcta. Pero el escepticismo auténtico no implica un rechazo automático de las ideas inusuales.
Se trata de una exigencia de pruebas convincentes, experimentos reproducibles y una metodología transparente. Propongo una verificación matemáticamente rigurosa de la hipótesis sobre la influencia de los ciclos astronómicos en los mercados de divisas. Una verificación basada en datos reales de un periodo de 15 años, con código abierto.
La Luna sigue su danza alrededor de la Tierra. La Tierra gira alrededor del Sol. Los planetas describen sus órbitas según las ecuaciones de Kepler y Newton. Y en las pantallas de millones de traders, las velas japonesas dibujan su danza de precios: una danza de emociones humanas, miedos y esperanzas.
¿Quizás estas dos danzas —la celestial y la terrenal— estén unidas por sutiles hilos de causalidad? ¿Quizás los antiguos astrólogos vislumbraron intuitivamente una regularidad real? ¿Quizás haya llegado el momento de comprobarlo mediante métodos rigurosos de análisis de datos, sin prejuicios ni dogmas?
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/19530
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
я начал с определения астрономических констант в коде
No se trata de constantes astronómicas, sino astrológicas. ¡Notad la diferencia!