lumibot 4.2.2__tar.gz → 4.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lumibot might be problematic. Click here for more details.
- {lumibot-4.2.2/lumibot.egg-info → lumibot-4.2.3}/PKG-INFO +1 -1
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/thetadata_backtesting_pandas.py +2 -1
- {lumibot-4.2.2 → lumibot-4.2.3/lumibot.egg-info}/PKG-INFO +1 -1
- {lumibot-4.2.2 → lumibot-4.2.3}/setup.py +1 -1
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_thetadata_helper.py +40 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/LICENSE +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/MANIFEST.in +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/README.md +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/alpaca_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/alpha_vantage_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/backtesting_broker.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/ccxt_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/databento_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/databento_backtesting_pandas.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/databento_backtesting_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/fix_debug.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/interactive_brokers_rest_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/pandas_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/polygon_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/thetadata_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/backtesting/yahoo_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/alpaca.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/bitunix.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/broker.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/ccxt.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/example_broker.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/interactive_brokers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/interactive_brokers_rest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/projectx.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/schwab.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/tradier.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/brokers/tradovate.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/configs_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/drift_rebalancer_logic.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/grok_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/options_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/perplexity_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/quiver_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/components/vix_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/constants.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/credentials.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/alpaca_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/alpha_vantage_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/bitunix_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/ccxt_backtesting_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/ccxt_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/data_source.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/data_source_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/databento_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/databento_data_pandas.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/databento_data_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/example_broker_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/exceptions.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/interactive_brokers_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/interactive_brokers_rest_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/pandas_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/polars_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/polars_mixin.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/polygon_data_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/projectx_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/schwab_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/tradier_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/tradovate_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/yahoo_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/data_sources/yahoo_data_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/asset.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/bar.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/bars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/chains.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/data_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/dataline.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/order.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/position.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/quote.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/entities/trading_fee.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/bitunix_futures_example.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/ccxt_backtesting_example.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/classic_60_40.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/classic_60_40_config.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/crypto_50_50.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/crypto_50_50_config.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/crypto_important_functions.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/drift_rebalancer.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/forex_hold_to_expiry.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/futures_hold_to_expiry.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/lifecycle_logger.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/options_hold_to_expiry.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/schedule_function.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/simple_start_single_file.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_bracket.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_buy_and_hold.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_diversified_leverage.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_limit_and_trailing_stops.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_momentum.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_oco.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/strangle.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/test_broker_functions.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/resources/ThetaTerminal.jar +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/resources/conf.yaml +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/strategies/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/strategies/_strategy.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/strategies/session_manager.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/strategies/strategy.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/strategies/strategy_executor.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/alpaca_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/backtest_cache.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/bitunix_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/black_scholes.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/ccxt_data_store.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/databento_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/databento_helper_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/debugers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/decorators.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/futures_roll.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/futures_symbols.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/indicators.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/lumibot_logger.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/lumibot_time.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/pandas.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/polars_utils.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/polygon_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/polygon_helper_async.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/polygon_helper_polars_optimized.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/projectx_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/schwab_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/thetadata_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/types.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/yahoo_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/tools/yahoo_helper_polars_optimized.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/traders/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/traders/debug_log_trader.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/traders/trader.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/trading_builtins/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/trading_builtins/custom_stream.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot/trading_builtins/safe_list.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot.egg-info/SOURCES.txt +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot.egg-info/dependency_links.txt +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot.egg-info/requires.txt +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/lumibot.egg-info/top_level.txt +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/pyproject.toml +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/setup.cfg +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/__init__.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/conftest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/performance_tracker.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/profile_thetadata_vs_polygon.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_accuracy_verification.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_backtesting_broker_processing.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_buy_hold_quiet_logs_full_run.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_crypto_cash_regressions.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_daily_data_timestamp_comparison.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_databento.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_databento_comprehensive_trading.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_databento_parity.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_debug_avg_fill_price.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_dividends.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_example_strategies.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_failing_backtest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_futures_edge_cases.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_futures_single_trade.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_futures_ultra_simple.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_index_data_verification.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_multileg_backtest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_pandas_backtest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_passing_trader_into_backtest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_polars_lru_eviction.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_polygon.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_strategy_executor.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_thetadata.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_thetadata_comprehensive.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_thetadata_vs_polygon.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/backtest/test_yahoo.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/conftest.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/fixtures.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_auth_fix.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_multileg_fix.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_alpaca_oauth.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_apscheduler_warnings.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_asset.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_asset_auto_expiry.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_auto_market_inference.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtest_cache_manager.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_broker.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_broker_await_close.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_broker_time_advance.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_crypto_cash_unit.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_data_source_env.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_flow_control.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_multileg_unit.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_backtesting_quiet_logs_complete.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_bars_aggregate_frequency_normalization.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_bars_aggregation_timeunits.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_bars_frequency_flex.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_botspot_handler.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_botspot_logger.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_broker_bitunix.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_broker_cleanup.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_broker_initialization.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_brokers_handle_crypto.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_cash.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_ccxt.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_ccxt_store.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_configs_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_continuous_futures.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_continuous_futures_integration.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_continuous_futures_resolution.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_data_polars_parity.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_data_source.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_asset_validation.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_auto_expiry_integration.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_backtesting.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_backtesting_polars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_live.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_databento_timezone_fixes.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_drift_rebalancer.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_futures_integration.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_futures_roll.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_get_historical_prices.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_indicator_subplots.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_integration_tests.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_interactive_brokers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_live_trading_resilience.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_logger_env_vars.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_logging.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_lumibot_logger.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_market_infinite_loop_bug.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_mes_symbols.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_momentum.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_options_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_order.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_order_serialization.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_pandas_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_polars_resample.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_polygon_helper.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_position_serialization.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_bracket_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_bracket_lifecycle_unit.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_datetime_columns.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_datetime_index.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_helpers.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_lifecycle.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_lifecycle_unit.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_live_flow.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_timestep_alias.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_projectx_url_mappings.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_quiet_logs_buy_and_hold.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_quiet_logs_comprehensive.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_quiet_logs_functionality.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_quiet_logs_requirements.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_session_manager.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_strategy_methods.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_thetadata_backwards_compat.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_thetadata_pandas_verification.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_tradier.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_tradier_data.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_tradingfee.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_tradovate.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_unified_logger.py +0 -0
- {lumibot-4.2.2 → lumibot-4.2.3}/tests/test_vix_helper.py +0 -0
|
@@ -288,7 +288,8 @@ class ThetaDataBacktestingPandas(PandasData):
|
|
|
288
288
|
)
|
|
289
289
|
|
|
290
290
|
expected_last_dt = self.to_default_timezone(current_dt).replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(days=1)
|
|
291
|
-
|
|
291
|
+
expected_last_dt_utc = expected_last_dt.astimezone(pytz.UTC)
|
|
292
|
+
target_index = pd.date_range(end=expected_last_dt_utc, periods=requested_length, freq="D", tz=pytz.UTC).tz_convert(self.tzinfo)
|
|
292
293
|
|
|
293
294
|
# DEBUG-LOG: Target index details
|
|
294
295
|
logger.debug(
|
|
@@ -1408,6 +1408,46 @@ class TestThetaDataChainsCaching:
|
|
|
1408
1408
|
assert time2 < time1 * 0.1, f"Cache not working: time1={time1:.2f}s, time2={time2:.2f}s (should be 10x faster)"
|
|
1409
1409
|
print(f"✓ Cache speedup: {time1/time2:.1f}x faster ({time1:.2f}s -> {time2:.4f}s)")
|
|
1410
1410
|
|
|
1411
|
+
|
|
1412
|
+
def test_finalize_day_frame_handles_dst_fallback():
|
|
1413
|
+
tz = pytz.timezone("America/New_York")
|
|
1414
|
+
utc = pytz.UTC
|
|
1415
|
+
frame_index = pd.date_range(
|
|
1416
|
+
end=tz.localize(datetime.datetime(2024, 10, 31, 16, 0)),
|
|
1417
|
+
periods=5,
|
|
1418
|
+
freq="D",
|
|
1419
|
+
)
|
|
1420
|
+
frame = pd.DataFrame(
|
|
1421
|
+
{
|
|
1422
|
+
"open": [100 + i for i in range(len(frame_index))],
|
|
1423
|
+
"high": [101 + i for i in range(len(frame_index))],
|
|
1424
|
+
"low": [99 + i for i in range(len(frame_index))],
|
|
1425
|
+
"close": [100.5 + i for i in range(len(frame_index))],
|
|
1426
|
+
"volume": [1000 + i for i in range(len(frame_index))],
|
|
1427
|
+
},
|
|
1428
|
+
index=frame_index,
|
|
1429
|
+
)
|
|
1430
|
+
|
|
1431
|
+
data_source = ThetaDataBacktestingPandas(
|
|
1432
|
+
datetime_start=utc.localize(datetime.datetime(2024, 10, 1)),
|
|
1433
|
+
datetime_end=utc.localize(datetime.datetime(2024, 11, 5)),
|
|
1434
|
+
username="user",
|
|
1435
|
+
password="pass",
|
|
1436
|
+
use_quote_data=False,
|
|
1437
|
+
)
|
|
1438
|
+
|
|
1439
|
+
current_dt = utc.localize(datetime.datetime(2024, 11, 4, 13, 30))
|
|
1440
|
+
result = data_source._finalize_day_frame(
|
|
1441
|
+
frame,
|
|
1442
|
+
current_dt,
|
|
1443
|
+
requested_length=len(frame_index),
|
|
1444
|
+
timeshift=None,
|
|
1445
|
+
asset=Asset("TSLA"),
|
|
1446
|
+
)
|
|
1447
|
+
|
|
1448
|
+
assert result is not None
|
|
1449
|
+
assert len(result) == len(frame_index)
|
|
1450
|
+
|
|
1411
1451
|
def test_chains_strike_format(self):
|
|
1412
1452
|
"""Test strikes are floats (not integers) and properly converted."""
|
|
1413
1453
|
username = os.environ.get("THETADATA_USERNAME")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lumibot-4.2.2 → lumibot-4.2.3}/lumibot/example_strategies/stock_limit_and_trailing_stops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|