lumibot 4.0.0__tar.gz → 4.2.9__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.0.0/lumibot.egg-info → lumibot-4.2.9}/PKG-INFO +22 -4
- {lumibot-4.0.0 → lumibot-4.2.9}/README.md +7 -0
- lumibot-4.2.9/lumibot/backtesting/__init__.py +30 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/alpaca_backtesting.py +8 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/backtesting_broker.py +592 -85
- lumibot-4.2.9/lumibot/backtesting/databento_backtesting.py +7 -0
- lumibot-4.0.0/lumibot/backtesting/databento_backtesting.py → lumibot-4.2.9/lumibot/backtesting/databento_backtesting_pandas.py +275 -46
- lumibot-4.2.9/lumibot/backtesting/databento_backtesting_polars.py +991 -0
- lumibot-4.2.9/lumibot/backtesting/fix_debug.py +37 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/polygon_backtesting.py +20 -14
- lumibot-4.2.9/lumibot/backtesting/thetadata_backtesting.py +12 -0
- lumibot-4.2.9/lumibot/backtesting/thetadata_backtesting_pandas.py +1168 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/alpaca.py +32 -10
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/bitunix.py +12 -13
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/broker.py +107 -29
- lumibot-4.2.9/lumibot/brokers/projectx.py +1561 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/schwab.py +12 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/tradovate.py +272 -104
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/options_helper.py +416 -57
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/vix_helper.py +2 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/credentials.py +51 -25
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/__init__.py +5 -7
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/alpaca_data.py +317 -11
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/data_source.py +106 -22
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/data_source_backtesting.py +66 -13
- lumibot-4.2.9/lumibot/data_sources/databento_data.py +7 -0
- lumibot-4.0.0/lumibot/data_sources/databento_data.py → lumibot-4.2.9/lumibot/data_sources/databento_data_pandas.py +113 -26
- lumibot-4.2.9/lumibot/data_sources/databento_data_polars.py +799 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/pandas_data.py +53 -37
- lumibot-4.2.9/lumibot/data_sources/polars_data.py +986 -0
- lumibot-4.2.9/lumibot/data_sources/polars_mixin.py +853 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/polygon_data_polars.py +26 -14
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/projectx_data.py +61 -12
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/tradier_data.py +2 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/yahoo_data.py +9 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/yahoo_data_polars.py +5 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/__init__.py +15 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/asset.py +198 -151
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/bars.py +114 -28
- lumibot-4.2.9/lumibot/entities/chains.py +156 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/data.py +80 -62
- lumibot-4.2.9/lumibot/entities/data_polars.py +668 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/order.py +22 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/position.py +91 -3
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/quote.py +29 -1
- lumibot-4.2.9/lumibot/resources/ThetaTerminal.jar +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/_strategy.py +273 -73
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/strategy.py +439 -49
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/strategy_executor.py +159 -27
- lumibot-4.2.9/lumibot/tools/backtest_cache.py +284 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/ccxt_data_store.py +1 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/databento_helper.py +450 -150
- lumibot-4.2.9/lumibot/tools/databento_helper_polars.py +1257 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/decorators.py +24 -11
- lumibot-4.2.9/lumibot/tools/futures_roll.py +251 -0
- lumibot-4.2.9/lumibot/tools/futures_symbols.py +280 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/helpers.py +31 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/indicators.py +161 -78
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/lumibot_logger.py +98 -69
- lumibot-4.2.9/lumibot/tools/polars_utils.py +142 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper.py +83 -6
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/projectx_helpers.py +305 -8
- lumibot-4.2.9/lumibot/tools/thetadata_helper.py +2348 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/trader.py +1 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/custom_stream.py +52 -9
- {lumibot-4.0.0 → lumibot-4.2.9/lumibot.egg-info}/PKG-INFO +22 -4
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/SOURCES.txt +50 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/requires.txt +2 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/setup.py +8 -5
- lumibot-4.2.9/tests/backtest/conftest.py +74 -0
- lumibot-4.2.9/tests/backtest/performance_tracker.py +153 -0
- lumibot-4.2.9/tests/backtest/profile_thetadata_vs_polygon.py +255 -0
- lumibot-4.2.9/tests/backtest/test_accuracy_verification.py +244 -0
- lumibot-4.2.9/tests/backtest/test_backtesting_broker_processing.py +733 -0
- lumibot-4.2.9/tests/backtest/test_crypto_cash_regressions.py +165 -0
- lumibot-4.2.9/tests/backtest/test_daily_data_timestamp_comparison.py +801 -0
- lumibot-4.2.9/tests/backtest/test_databento.py +240 -0
- lumibot-4.2.9/tests/backtest/test_databento_comprehensive_trading.py +547 -0
- lumibot-4.2.9/tests/backtest/test_databento_parity.py +105 -0
- lumibot-4.2.9/tests/backtest/test_debug_avg_fill_price.py +112 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_dividends.py +8 -3
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_example_strategies.py +85 -49
- lumibot-4.2.9/tests/backtest/test_futures_edge_cases.py +484 -0
- lumibot-4.2.9/tests/backtest/test_futures_single_trade.py +270 -0
- lumibot-4.2.9/tests/backtest/test_futures_ultra_simple.py +191 -0
- lumibot-4.2.9/tests/backtest/test_index_data_verification.py +348 -0
- lumibot-4.2.9/tests/backtest/test_multileg_backtest.py +144 -0
- lumibot-4.2.9/tests/backtest/test_pandas_backtest.py +166 -0
- lumibot-4.2.9/tests/backtest/test_polars_lru_eviction.py +470 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_polygon.py +50 -26
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_thetadata.py +246 -60
- lumibot-4.2.9/tests/backtest/test_thetadata_comprehensive.py +729 -0
- lumibot-4.2.9/tests/backtest/test_thetadata_vs_polygon.py +557 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_yahoo.py +43 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/conftest.py +20 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_multileg_fix.py +4 -4
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_asset.py +29 -0
- lumibot-4.2.9/tests/test_backtest_cache_manager.py +149 -0
- lumibot-4.2.9/tests/test_backtesting_crypto_cash_unit.py +391 -0
- lumibot-4.2.9/tests/test_backtesting_data_source_env.py +292 -0
- lumibot-4.2.9/tests/test_backtesting_datetime_normalization.py +94 -0
- lumibot-4.2.9/tests/test_backtesting_multileg_unit.py +188 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_quiet_logs_complete.py +10 -11
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_frequency_flex.py +29 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_brokers_handle_crypto.py +1 -4
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_ccxt_store.py +10 -2
- lumibot-4.2.9/tests/test_continuous_futures.py +251 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_continuous_futures_integration.py +39 -32
- lumibot-4.2.9/tests/test_continuous_futures_resolution.py +314 -0
- lumibot-4.2.9/tests/test_data_polars_parity.py +160 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_data_source.py +2 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_asset_validation.py +23 -5
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_backtesting.py +46 -2
- lumibot-4.2.9/tests/test_databento_backtesting_polars.py +321 -0
- lumibot-4.2.9/tests/test_databento_data.py +250 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_helper.py +84 -93
- lumibot-4.2.9/tests/test_databento_live.py +458 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_timezone_fixes.py +34 -15
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_drift_rebalancer.py +8 -2
- lumibot-4.2.9/tests/test_futures_integration.py +236 -0
- lumibot-4.2.9/tests/test_futures_roll.py +38 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_get_historical_prices.py +151 -26
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_indicator_subplots.py +196 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_integration_tests.py +6 -3
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_logger_env_vars.py +3 -1
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_lumibot_logger.py +7 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_market_infinite_loop_bug.py +77 -3
- lumibot-4.2.9/tests/test_options_helper.py +723 -0
- lumibot-4.2.9/tests/test_order_serialization.py +90 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_pandas_data.py +25 -0
- lumibot-4.2.9/tests/test_polars_resample.py +67 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_polygon_helper.py +76 -19
- lumibot-4.2.9/tests/test_position_serialization.py +104 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx.py +32 -30
- lumibot-4.2.9/tests/test_projectx_bracket_helpers.py +172 -0
- lumibot-4.2.9/tests/test_projectx_bracket_lifecycle_unit.py +164 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_data.py +17 -13
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_helpers.py +10 -7
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_lifecycle.py +15 -51
- lumibot-4.2.9/tests/test_projectx_lifecycle_unit.py +524 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_timestep_alias.py +1 -2
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_url_mappings.py +13 -6
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_requirements.py +5 -5
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_session_manager.py +8 -3
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_strategy_methods.py +24 -1
- lumibot-4.2.9/tests/test_strategy_price_guard.py +50 -0
- lumibot-4.2.9/tests/test_thetadata_backwards_compat.py +97 -0
- lumibot-4.2.9/tests/test_thetadata_helper.py +1718 -0
- lumibot-4.2.9/tests/test_thetadata_pandas_verification.py +186 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradovate.py +109 -120
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_vix_helper.py +5 -9
- lumibot-4.0.0/lumibot/backtesting/__init__.py +0 -15
- lumibot-4.0.0/lumibot/backtesting/databento_backtesting_polars.py +0 -665
- lumibot-4.0.0/lumibot/backtesting/thetadata_backtesting.py +0 -337
- lumibot-4.0.0/lumibot/brokers/projectx.py +0 -1344
- lumibot-4.0.0/lumibot/data_sources/databento_data_polars.py +0 -463
- lumibot-4.0.0/lumibot/data_sources/polars_mixin.py +0 -372
- lumibot-4.0.0/lumibot/entities/chains.py +0 -55
- lumibot-4.0.0/lumibot/tools/databento_helper_polars.py +0 -654
- lumibot-4.0.0/lumibot/tools/thetadata_helper.py +0 -617
- lumibot-4.0.0/tests/backtest/test_pandas_backtest.py +0 -41
- lumibot-4.0.0/tests/test_continuous_futures_resolution.py +0 -360
- lumibot-4.0.0/tests/test_databento_data.py +0 -493
- lumibot-4.0.0/tests/test_options_helper_enhancements.py +0 -181
- lumibot-4.0.0/tests/test_projectx_lifecycle_unit.py +0 -131
- lumibot-4.0.0/tests/test_thetadata_helper.py +0 -965
- {lumibot-4.0.0 → lumibot-4.2.9}/LICENSE +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/MANIFEST.in +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/alpha_vantage_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/ccxt_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/interactive_brokers_rest_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/pandas_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/yahoo_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/ccxt.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/example_broker.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/interactive_brokers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/interactive_brokers_rest.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/tradier.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/configs_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/drift_rebalancer_logic.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/grok_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/perplexity_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/quiver_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/constants.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/alpha_vantage_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/bitunix_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/ccxt_backtesting_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/ccxt_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/example_broker_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/exceptions.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/interactive_brokers_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/interactive_brokers_rest_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/schwab_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/tradovate_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/bar.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/dataline.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/trading_fee.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/bitunix_futures_example.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/ccxt_backtesting_example.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/classic_60_40.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/classic_60_40_config.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_50_50.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_50_50_config.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_important_functions.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/drift_rebalancer.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/forex_hold_to_expiry.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/futures_hold_to_expiry.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/lifecycle_logger.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/options_hold_to_expiry.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/schedule_function.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/simple_start_single_file.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_bracket.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_buy_and_hold.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_diversified_leverage.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_limit_and_trailing_stops.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_momentum.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_oco.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/strangle.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/test_broker_functions.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/resources/conf.yaml +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/session_manager.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/alpaca_helpers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/bitunix_helpers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/black_scholes.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/debugers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/lumibot_time.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/pandas.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper_async.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper_polars_optimized.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/schwab_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/types.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/yahoo_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/yahoo_helper_polars_optimized.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/debug_log_trader.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/safe_list.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/dependency_links.txt +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/top_level.txt +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/pyproject.toml +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/setup.cfg +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/__init__.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_buy_hold_quiet_logs_full_run.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_failing_backtest.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_passing_trader_into_backtest.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_strategy_executor.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/fixtures.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_auth_fix.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_backtesting.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_helpers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_oauth.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_apscheduler_warnings.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_asset_auto_expiry.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_auto_market_inference.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker_await_close.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker_time_advance.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_flow_control.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_aggregate_frequency_normalization.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_aggregation_timeunits.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_botspot_handler.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_botspot_logger.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_bitunix.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_cleanup.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_initialization.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_cash.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_ccxt.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_configs_helper.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_auto_expiry_integration.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_helpers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_interactive_brokers.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_live_trading_resilience.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_logging.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_mes_symbols.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_momentum.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_order.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_datetime_columns.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_datetime_index.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_live_flow.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_buy_and_hold.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_comprehensive.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_functionality.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradier.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradier_data.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradingfee.py +0 -0
- {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_unified_logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: lumibot
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.9
|
|
4
4
|
Summary: Backtesting and Trading Library, Made by Lumiwealth
|
|
5
5
|
Home-page: https://github.com/Lumiwealth/lumibot
|
|
6
6
|
Author: Robert Grzesik
|
|
@@ -22,7 +22,7 @@ Requires-Dist: numpy>=1.20.0
|
|
|
22
22
|
Requires-Dist: pandas>=2.2.0
|
|
23
23
|
Requires-Dist: polars>=1.32.3
|
|
24
24
|
Requires-Dist: pandas_market_calendars>=5.1.0
|
|
25
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: pandas-ta-classic>=0.3.14b0
|
|
26
26
|
Requires-Dist: plotly>=5.18.0
|
|
27
27
|
Requires-Dist: sqlalchemy
|
|
28
28
|
Requires-Dist: bcrypt
|
|
@@ -43,7 +43,6 @@ Requires-Dist: psycopg2-binary
|
|
|
43
43
|
Requires-Dist: exchange_calendars>=4.6.0
|
|
44
44
|
Requires-Dist: duckdb
|
|
45
45
|
Requires-Dist: tabulate
|
|
46
|
-
Requires-Dist: thetadata==0.9.11
|
|
47
46
|
Requires-Dist: databento>=0.42.0
|
|
48
47
|
Requires-Dist: holidays
|
|
49
48
|
Requires-Dist: psutil
|
|
@@ -52,6 +51,18 @@ Requires-Dist: schwab-py>=1.5.0
|
|
|
52
51
|
Requires-Dist: Flask>=2.3
|
|
53
52
|
Requires-Dist: free-proxy
|
|
54
53
|
Requires-Dist: requests-oauthlib
|
|
54
|
+
Requires-Dist: boto3>=1.40.64
|
|
55
|
+
Dynamic: author
|
|
56
|
+
Dynamic: author-email
|
|
57
|
+
Dynamic: classifier
|
|
58
|
+
Dynamic: description
|
|
59
|
+
Dynamic: description-content-type
|
|
60
|
+
Dynamic: home-page
|
|
61
|
+
Dynamic: license
|
|
62
|
+
Dynamic: license-file
|
|
63
|
+
Dynamic: requires-dist
|
|
64
|
+
Dynamic: requires-python
|
|
65
|
+
Dynamic: summary
|
|
55
66
|
|
|
56
67
|
[](https://github.com/Lumiwealth/lumibot/actions/workflows/cicd.yaml)
|
|
57
68
|
[](https://github.com/Lumiwealth/lumibot/actions/workflows/cicd.yaml)
|
|
@@ -136,6 +147,13 @@ To run an individual test file, you can run the following command:
|
|
|
136
147
|
pytest tests/test_asset.py
|
|
137
148
|
```
|
|
138
149
|
|
|
150
|
+
## Remote Cache Configuration
|
|
151
|
+
|
|
152
|
+
Lumibot can mirror its local parquet caches to AWS S3 when you enable the new
|
|
153
|
+
backtest cache manager. The feature is optional and defaults to local storage.
|
|
154
|
+
To configure the environment variables, understand the key naming convention,
|
|
155
|
+
and follow the manual validation checklist, review `docs/remote_cache.md`.
|
|
156
|
+
|
|
139
157
|
### Showing Code Coverage
|
|
140
158
|
|
|
141
159
|
To show code coverage, you can run the following command:
|
|
@@ -81,6 +81,13 @@ To run an individual test file, you can run the following command:
|
|
|
81
81
|
pytest tests/test_asset.py
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
## Remote Cache Configuration
|
|
85
|
+
|
|
86
|
+
Lumibot can mirror its local parquet caches to AWS S3 when you enable the new
|
|
87
|
+
backtest cache manager. The feature is optional and defaults to local storage.
|
|
88
|
+
To configure the environment variables, understand the key naming convention,
|
|
89
|
+
and follow the manual validation checklist, review `docs/remote_cache.md`.
|
|
90
|
+
|
|
84
91
|
### Showing Code Coverage
|
|
85
92
|
|
|
86
93
|
To show code coverage, you can run the following command:
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from .alpaca_backtesting import AlpacaBacktesting
|
|
2
|
+
from .alpha_vantage_backtesting import AlphaVantageBacktesting
|
|
3
|
+
from .backtesting_broker import BacktestingBroker
|
|
4
|
+
from .ccxt_backtesting import CcxtBacktesting
|
|
5
|
+
from .interactive_brokers_rest_backtesting import InteractiveBrokersRESTBacktesting
|
|
6
|
+
from .pandas_backtesting import PandasDataBacktesting
|
|
7
|
+
from .polygon_backtesting import PolygonDataBacktesting
|
|
8
|
+
from .thetadata_backtesting import ThetaDataBacktesting
|
|
9
|
+
from .thetadata_backtesting_pandas import ThetaDataBacktestingPandas
|
|
10
|
+
from .yahoo_backtesting import YahooDataBacktesting
|
|
11
|
+
|
|
12
|
+
from .databento_backtesting import DataBentoDataBacktesting
|
|
13
|
+
from .databento_backtesting_pandas import DataBentoDataBacktestingPandas
|
|
14
|
+
from .databento_backtesting_polars import DataBentoDataBacktestingPolars
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"AlpacaBacktesting",
|
|
18
|
+
"AlphaVantageBacktesting",
|
|
19
|
+
"BacktestingBroker",
|
|
20
|
+
"CcxtBacktesting",
|
|
21
|
+
"InteractiveBrokersRESTBacktesting",
|
|
22
|
+
"PandasDataBacktesting",
|
|
23
|
+
"PolygonDataBacktesting",
|
|
24
|
+
"ThetaDataBacktesting",
|
|
25
|
+
"ThetaDataBacktestingPandas",
|
|
26
|
+
"YahooDataBacktesting",
|
|
27
|
+
"DataBentoDataBacktesting",
|
|
28
|
+
"DataBentoDataBacktestingPandas",
|
|
29
|
+
"DataBentoDataBacktestingPolars",
|
|
30
|
+
]
|
|
@@ -374,7 +374,14 @@ class AlpacaBacktesting(DataSourceBacktesting):
|
|
|
374
374
|
else:
|
|
375
375
|
result_df = df.iloc[max(0, current_index - length + 1): current_index + 1]
|
|
376
376
|
|
|
377
|
-
return Bars(
|
|
377
|
+
return Bars(
|
|
378
|
+
result_df,
|
|
379
|
+
self.SOURCE,
|
|
380
|
+
asset=asset,
|
|
381
|
+
quote=quote,
|
|
382
|
+
return_polars=return_polars,
|
|
383
|
+
tzinfo=self.tzinfo,
|
|
384
|
+
)
|
|
378
385
|
|
|
379
386
|
def get_chains(self, asset, quote=None):
|
|
380
387
|
"""Mock implementation for getting option chains"""
|