Полагается ли PandasDataBacktesting от Lumibot на pandas_market_calendars таким образом, чтобы предотвратить 24-часовое Python

Программы на Python
Ответить
Anonymous
 Полагается ли PandasDataBacktesting от Lumibot на pandas_market_calendars таким образом, чтобы предотвратить 24-часовое

Сообщение Anonymous »

Я пытаюсь протестировать механизм обработки сигналов с помощью PandasDataBacktesting от Lumibot на 24-часовых наборах данных (форекс или биржевые данные с предварительным рынком и после закрытия от Polygon.io).
Однако Lumibot совершает сделки только между 09:30 и 16:00 по Америке/Нью-Йорку, хотя мои входные данные содержит столбцы за полные 24 часа.
Во время отладки я заметил две вещи, которые хочу проверить:

1. Утверждение: Lumibot вводит календарь часов работы рынка

Код: Выделить всё

lumibot/brokers/broker.py
импортирует pandas_market_calendars:

Код: Выделить всё

import pandas_market_calendars as mcal
Источник:
https://github.com/Lumiwealth/lumibot/b ... /broker.py
И pandas_market_calendars предоставляет календари только для биржевых активов (NYSE, NASDAQ, CME и т. д.).
Выполняется:

Код: Выделить всё

mcal.get_calendar_names()
не возвращает форекс-календари или 24-часовые рыночные календари.
Вопрос:
Привязана ли брокерская логика Lumibot по своей сути к этим календарям, то есть платформа предполагает сеансы в стиле акций?

2. Утверждение: Lumibot не может обрабатывать непрерывные 24-часовые данные
Даже когда я предоставляю минутные столбцы за весь день, бэктестер регистрирует:

Код: Выделить всё

Market opens in 63000 seconds  (17.5 hours)
Advancing time by 59400 seconds (skipping 16.5 hours)
Это приводит к следующему:
  • Множество временных меток пропускается
  • ~70% моих сигналов никогда не выполняется
  • Оцениваются только сделки в период с 09:30 до 16:00
    Вопрос:
    Ожидается ли такое поведение, и официально ли Lumibot поддерживает только обычные часы работы фондового рынка во время бэктестинга?
Минимальный пример

Код: Выделить всё

from lumibot.backtesting import PandasDataBacktesting
from my_strategy import SignalBasedStrategy

SignalBasedStrategy.run_backtest(
PandasDataBacktesting,
start_date,
end_date,
pandas_data=full_24h_dataframe,
parameters={"signals_df": signal_df},
budget=100000,
)
Даже при наличии непрерывных 24-часовых данных обрабатывается только обычная сессия NYSE.

Что мне нужно подтвердить
  • Неужели Lumibot принципиально не способен проводить непрерывные 24-часовые рынки (форекс/криптовалюта)?
  • Есть ли конфигурация, которую мне не хватает, или это ограничение PandasDataBacktesting?
  • Должны ли все данные предварительно фильтроваться для обмена часами перед использованием Lumibot?
Ищем разъяснения от всех, кто работал с внутренними компонентами Lumibot или обработкой данных в течение длительного времени.

Подробнее здесь: https://stackoverflow.com/questions/798 ... n-a-way-th
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»