Блог им. Riskplayer

Торговля по луне

Попробуем быстренько исследовать, можно ли извлечь что-нибудь из лунного цикла с помощью питона и библиотек pandas и pylunar на индексе IMOEX. Предварительно устанавливаем pylunar. Библиотека дает дает информацию о луне на основе локации и даты.

import pylunar
import pandas as pd
import matplotlib.pyplot as plt

*** Теперь готовим дневные данные индекса IMOEX ***
*** Если есть минутные данные в формате DataFrame, то делаем следующее  ***

df = intraday_df.resample('D').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'})
df = df.dropna() 

Теперь в df содержатся дневки IMOEX.

  *** Вычисляем процентное изменение цены за один день
df['pct'] = df['Close'].pct_change().shift(-1)  

  *** Изменение цены за один день
df['diff'] = df['Close'].diff().shift(-1)              

Делаем стобец для хранения лунных дней
df['age'] = 0.0

mi = pylunar.MoonInfo((55,45,7),(37,36,56))

Здесь цифры (55,45,7),(37,36,56) — широта и долгота г.Москвы
Вычисляем «возраст» лунного цикла на 15 ч 40 мин UTC (т.е по московскому времени 18:40 — это время закрытия основной сессии).

for i in range(len(df)):

    mi.update((df.index[i].year, df.index[i].month, df.index[i].day, 15, 40,0))
    df.at[df.index[i], 'age'] = mi.age()

Здесь в цикле в столбец «age» вычисляем для каждой даты число лунного дня.
Для простоты создаем еще столбец «round_age», где храним округленные числа лунных дней.
df['round_age'] = df['age'].round()

А теперь разбиваем данные на две выборки, одна выборка df_1 с 2012 до 01.01.2024 для вычисления, вторая df_2 для проверки на данных 2024 года.

from datetime import datetime
finish_date = datetime(2024, 1, 1)
df_1 = df[df.index < finish_date]
df_2 = df[df.index > finish_date]

Смотрим распределение средних процентных доходностей по лунным дням.
td=df.groupby(['round_age'])['pct'].mean()
td.plot(kind = 'bar')



Торговля по луне
Видим, что с 23 по 25 лунный день есть положительные доходности. Т.е. стратегия следующая: на закрытие дня 23 лунного дня покупаем и на закрытии 26 дня продаем. Смотрим доход нарастающим итогом на первой выборке.

df_1[(df_1['round_age'] >= 23) & (df_1['round_age'] <= 25)]['diff'].cumsum().plot()
Торговля по луне

Вроде годно, но похоже, система поломалась в конце выборке. Проверяем на второй выборке:
df_2[(df_2['round_age'] >= 23) & (df_2['round_age'] <= 25)]['diff'].cumsum().plot()
Торговля по луне
Мда ужжж… В этом году луна не помогла нам заработать.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
| ★5
26 комментариев
Обычно такими исследованиями занимаются британские ученые…
*ложный процент, Иногда, в целях развлечения можно.
avatar
Интересно, а есть ли влияние солнечного цикла активности, 11 летнего например.
avatar
Alexide, Не знаю. Не исследовал этот вопрос. Хотя, наверное, интересно посмотреть.
avatar
Riskplayer, А что ты исследовал? Квадрат 9 Ганна? Годовой календарь 360 градусов?
avatar
ezomm, Исследовал простую вещь. В лунном цикле есть ли благоприятные дни для покупок или нет. 
avatar
Riskplayer, попробуй исследовать наш день.Типа до 17-00 продавать, а с 17-00 до 10-00 покупать? Например в Сипи500 рабочая сессия продажа, а дальше покупка.У них Азия покупает Сипи500.
avatar
сколько свободного времени у людей :)
Коллега!
Была похожая статья у меня, но потом удалил:
https://smart-lab.ru/blog/739004.php
Дмитрий Овчинников, Спасибо. Видимо, пропустил.
avatar
Riskplayer, 
нашел конфигурационный файл. Там была и вот такая система, в общем то как у вас, только я не по закрытию дня, естественно, а в интрадее: 
открытие от 23.24 до 23.44
закрытие от 25.97

Дмитрий Овчинников, Спасибо! Очень интересно. Цифры получились очень близкие. 
avatar
По солнцу надо, а не по луне!
avatar
Вы берете временной промежуток форс мажорного периода..

Это неправильно.
Возьмите например 2010-2012 гг
avatar
Al Bax, если мне склероз не изменяет, то в 2011 году мы стали жить перевода времени на летний час. Поэтому более ранние периоды как-то не стоит брать. За Ваше мнение спасибо, попробую поэкспериментировать с периодами.
avatar
Над ещё пробовать оценить влияние ретроградности меркурия
avatar
Походу нерезы были подвержены лунным циклам. На наших инвесторов не действует
avatar
А где вы скачали исторические данные? Вы их проверяли с оригиналом? Сколько я не скачивал бесплатных данных, везде есть дефекты. Кроме того, выборка меньше 10 лет — это очень мало. Мой совет — сделайте интерполяцию данных. То есть данные надо сначала подготовить, как это и есть наука.
avatar
И ещё, если хотите дельного совета, выкладывайте код и исторические данные полностью, да хоть в яндекс облако. А то вашу идею я мог бы развить, а с нуля лень даже 5 строчек думать.

Я вон цикл по золоту экстраполировал:
smart-lab.ru/mobile/topic/1073082/


Могу выложить, я не знал, что здесь тоже есть программисты.
avatar
Кстати, а зачем вы используете чью-то лунную библиотеку? Лучше самому сделать и фазы считать, вы учитывали таймзоны?
avatar
Ivan Gurov, Эта библиотека сама все считает и учитывает таймзоны. 
avatar
Хороший пример, иллюстрирующий возможности переподгонки. Всегда можно найти прибыльную комбинацию на историчесих данных. 
avatar
Poll, разного рода сезонности такие. Сегодня есть, а завтра нет. Точнее чаще всего, вчера были, а сегодня нет.
avatar
Riskplayer, добавьте еще пару параметров, например активность солнца или облачность или скорость ветра и эквити станет еще красивее))
avatar
Думаю, неправильный подход. Я бы смотрел строго новолуния и полнолуния. В разные месяцы новолуния попадают на разные лунные дни: 14, 15, 16 дни. А вы чешете 14, 15, 16 лунный дни под одну гребенку. 
Новолуния тоже не все одинаковые. Есть месяца, где есть 30 лунный день, а есть, где такого дня нет. Посмотреть, как влияет наличие, отсутствие 30 лунного дня.
Как влияет наличие в году дополнительных новолуний («Чёрная Луна»), полнолуний («Голубая Луна»)? 
avatar
Дмитрий-сан, спасибо за уточнения. Попробую на досуге посмотреть.
avatar

Читайте на SMART-LAB:
Фото
Новые возможности с БКС API: торги заблокированными активами, внебиржевой валютой и другое
Делимся новостями БКС API¹ — мы выпустили три важных обновления, которые расширяют торговые инструменты и упрощают работу с рыночными...
Обновление кредитных рейтингов в ВДО и розничных облигациях (ООО "Лизинг-Трейд" понижен ruBB+, ООО «Оил Ресурс» и АО «Кириллица» отозван)
🔴ООО «Лизинг-Трейд» Эксперт РА понизил рейтинг кредитоспособности до уровня ruBB+ и изменил прогноз на развивающийся. Ранее у Компании...
Фото
Токио против рынка: сколько резервов хватит для защиты иены
Цены на нефть продолжают снижение, начавшееся в среду, хотя темпы падения уже замедлились. За последние сутки новостной фон по Ближнему Востоку...
Фото
ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...

теги блога Riskplayer

....все тэги



UPDONW
Новый дизайн