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.

Files changed (295) hide show
  1. {lumibot-4.0.0/lumibot.egg-info → lumibot-4.2.9}/PKG-INFO +22 -4
  2. {lumibot-4.0.0 → lumibot-4.2.9}/README.md +7 -0
  3. lumibot-4.2.9/lumibot/backtesting/__init__.py +30 -0
  4. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/alpaca_backtesting.py +8 -1
  5. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/backtesting_broker.py +592 -85
  6. lumibot-4.2.9/lumibot/backtesting/databento_backtesting.py +7 -0
  7. lumibot-4.0.0/lumibot/backtesting/databento_backtesting.py → lumibot-4.2.9/lumibot/backtesting/databento_backtesting_pandas.py +275 -46
  8. lumibot-4.2.9/lumibot/backtesting/databento_backtesting_polars.py +991 -0
  9. lumibot-4.2.9/lumibot/backtesting/fix_debug.py +37 -0
  10. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/polygon_backtesting.py +20 -14
  11. lumibot-4.2.9/lumibot/backtesting/thetadata_backtesting.py +12 -0
  12. lumibot-4.2.9/lumibot/backtesting/thetadata_backtesting_pandas.py +1168 -0
  13. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/alpaca.py +32 -10
  14. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/bitunix.py +12 -13
  15. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/broker.py +107 -29
  16. lumibot-4.2.9/lumibot/brokers/projectx.py +1561 -0
  17. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/schwab.py +12 -2
  18. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/tradovate.py +272 -104
  19. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/options_helper.py +416 -57
  20. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/vix_helper.py +2 -2
  21. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/credentials.py +51 -25
  22. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/__init__.py +5 -7
  23. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/alpaca_data.py +317 -11
  24. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/data_source.py +106 -22
  25. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/data_source_backtesting.py +66 -13
  26. lumibot-4.2.9/lumibot/data_sources/databento_data.py +7 -0
  27. lumibot-4.0.0/lumibot/data_sources/databento_data.py → lumibot-4.2.9/lumibot/data_sources/databento_data_pandas.py +113 -26
  28. lumibot-4.2.9/lumibot/data_sources/databento_data_polars.py +799 -0
  29. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/pandas_data.py +53 -37
  30. lumibot-4.2.9/lumibot/data_sources/polars_data.py +986 -0
  31. lumibot-4.2.9/lumibot/data_sources/polars_mixin.py +853 -0
  32. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/polygon_data_polars.py +26 -14
  33. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/projectx_data.py +61 -12
  34. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/tradier_data.py +2 -1
  35. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/yahoo_data.py +9 -2
  36. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/yahoo_data_polars.py +5 -0
  37. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/__init__.py +15 -0
  38. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/asset.py +198 -151
  39. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/bars.py +114 -28
  40. lumibot-4.2.9/lumibot/entities/chains.py +156 -0
  41. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/data.py +80 -62
  42. lumibot-4.2.9/lumibot/entities/data_polars.py +668 -0
  43. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/order.py +22 -2
  44. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/position.py +91 -3
  45. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/quote.py +29 -1
  46. lumibot-4.2.9/lumibot/resources/ThetaTerminal.jar +0 -0
  47. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/_strategy.py +273 -73
  48. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/strategy.py +439 -49
  49. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/strategy_executor.py +159 -27
  50. lumibot-4.2.9/lumibot/tools/backtest_cache.py +284 -0
  51. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/ccxt_data_store.py +1 -1
  52. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/databento_helper.py +450 -150
  53. lumibot-4.2.9/lumibot/tools/databento_helper_polars.py +1257 -0
  54. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/decorators.py +24 -11
  55. lumibot-4.2.9/lumibot/tools/futures_roll.py +251 -0
  56. lumibot-4.2.9/lumibot/tools/futures_symbols.py +280 -0
  57. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/helpers.py +31 -1
  58. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/indicators.py +161 -78
  59. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/lumibot_logger.py +98 -69
  60. lumibot-4.2.9/lumibot/tools/polars_utils.py +142 -0
  61. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper.py +83 -6
  62. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/projectx_helpers.py +305 -8
  63. lumibot-4.2.9/lumibot/tools/thetadata_helper.py +2348 -0
  64. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/trader.py +1 -1
  65. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/custom_stream.py +52 -9
  66. {lumibot-4.0.0 → lumibot-4.2.9/lumibot.egg-info}/PKG-INFO +22 -4
  67. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/SOURCES.txt +50 -1
  68. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/requires.txt +2 -2
  69. {lumibot-4.0.0 → lumibot-4.2.9}/setup.py +8 -5
  70. lumibot-4.2.9/tests/backtest/conftest.py +74 -0
  71. lumibot-4.2.9/tests/backtest/performance_tracker.py +153 -0
  72. lumibot-4.2.9/tests/backtest/profile_thetadata_vs_polygon.py +255 -0
  73. lumibot-4.2.9/tests/backtest/test_accuracy_verification.py +244 -0
  74. lumibot-4.2.9/tests/backtest/test_backtesting_broker_processing.py +733 -0
  75. lumibot-4.2.9/tests/backtest/test_crypto_cash_regressions.py +165 -0
  76. lumibot-4.2.9/tests/backtest/test_daily_data_timestamp_comparison.py +801 -0
  77. lumibot-4.2.9/tests/backtest/test_databento.py +240 -0
  78. lumibot-4.2.9/tests/backtest/test_databento_comprehensive_trading.py +547 -0
  79. lumibot-4.2.9/tests/backtest/test_databento_parity.py +105 -0
  80. lumibot-4.2.9/tests/backtest/test_debug_avg_fill_price.py +112 -0
  81. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_dividends.py +8 -3
  82. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_example_strategies.py +85 -49
  83. lumibot-4.2.9/tests/backtest/test_futures_edge_cases.py +484 -0
  84. lumibot-4.2.9/tests/backtest/test_futures_single_trade.py +270 -0
  85. lumibot-4.2.9/tests/backtest/test_futures_ultra_simple.py +191 -0
  86. lumibot-4.2.9/tests/backtest/test_index_data_verification.py +348 -0
  87. lumibot-4.2.9/tests/backtest/test_multileg_backtest.py +144 -0
  88. lumibot-4.2.9/tests/backtest/test_pandas_backtest.py +166 -0
  89. lumibot-4.2.9/tests/backtest/test_polars_lru_eviction.py +470 -0
  90. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_polygon.py +50 -26
  91. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_thetadata.py +246 -60
  92. lumibot-4.2.9/tests/backtest/test_thetadata_comprehensive.py +729 -0
  93. lumibot-4.2.9/tests/backtest/test_thetadata_vs_polygon.py +557 -0
  94. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_yahoo.py +43 -2
  95. {lumibot-4.0.0 → lumibot-4.2.9}/tests/conftest.py +20 -0
  96. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_multileg_fix.py +4 -4
  97. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_asset.py +29 -0
  98. lumibot-4.2.9/tests/test_backtest_cache_manager.py +149 -0
  99. lumibot-4.2.9/tests/test_backtesting_crypto_cash_unit.py +391 -0
  100. lumibot-4.2.9/tests/test_backtesting_data_source_env.py +292 -0
  101. lumibot-4.2.9/tests/test_backtesting_datetime_normalization.py +94 -0
  102. lumibot-4.2.9/tests/test_backtesting_multileg_unit.py +188 -0
  103. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_quiet_logs_complete.py +10 -11
  104. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_frequency_flex.py +29 -0
  105. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_brokers_handle_crypto.py +1 -4
  106. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_ccxt_store.py +10 -2
  107. lumibot-4.2.9/tests/test_continuous_futures.py +251 -0
  108. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_continuous_futures_integration.py +39 -32
  109. lumibot-4.2.9/tests/test_continuous_futures_resolution.py +314 -0
  110. lumibot-4.2.9/tests/test_data_polars_parity.py +160 -0
  111. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_data_source.py +2 -2
  112. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_asset_validation.py +23 -5
  113. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_backtesting.py +46 -2
  114. lumibot-4.2.9/tests/test_databento_backtesting_polars.py +321 -0
  115. lumibot-4.2.9/tests/test_databento_data.py +250 -0
  116. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_helper.py +84 -93
  117. lumibot-4.2.9/tests/test_databento_live.py +458 -0
  118. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_timezone_fixes.py +34 -15
  119. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_drift_rebalancer.py +8 -2
  120. lumibot-4.2.9/tests/test_futures_integration.py +236 -0
  121. lumibot-4.2.9/tests/test_futures_roll.py +38 -0
  122. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_get_historical_prices.py +151 -26
  123. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_indicator_subplots.py +196 -0
  124. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_integration_tests.py +6 -3
  125. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_logger_env_vars.py +3 -1
  126. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_lumibot_logger.py +7 -0
  127. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_market_infinite_loop_bug.py +77 -3
  128. lumibot-4.2.9/tests/test_options_helper.py +723 -0
  129. lumibot-4.2.9/tests/test_order_serialization.py +90 -0
  130. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_pandas_data.py +25 -0
  131. lumibot-4.2.9/tests/test_polars_resample.py +67 -0
  132. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_polygon_helper.py +76 -19
  133. lumibot-4.2.9/tests/test_position_serialization.py +104 -0
  134. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx.py +32 -30
  135. lumibot-4.2.9/tests/test_projectx_bracket_helpers.py +172 -0
  136. lumibot-4.2.9/tests/test_projectx_bracket_lifecycle_unit.py +164 -0
  137. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_data.py +17 -13
  138. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_helpers.py +10 -7
  139. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_lifecycle.py +15 -51
  140. lumibot-4.2.9/tests/test_projectx_lifecycle_unit.py +524 -0
  141. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_timestep_alias.py +1 -2
  142. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_url_mappings.py +13 -6
  143. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_requirements.py +5 -5
  144. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_session_manager.py +8 -3
  145. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_strategy_methods.py +24 -1
  146. lumibot-4.2.9/tests/test_strategy_price_guard.py +50 -0
  147. lumibot-4.2.9/tests/test_thetadata_backwards_compat.py +97 -0
  148. lumibot-4.2.9/tests/test_thetadata_helper.py +1718 -0
  149. lumibot-4.2.9/tests/test_thetadata_pandas_verification.py +186 -0
  150. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradovate.py +109 -120
  151. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_vix_helper.py +5 -9
  152. lumibot-4.0.0/lumibot/backtesting/__init__.py +0 -15
  153. lumibot-4.0.0/lumibot/backtesting/databento_backtesting_polars.py +0 -665
  154. lumibot-4.0.0/lumibot/backtesting/thetadata_backtesting.py +0 -337
  155. lumibot-4.0.0/lumibot/brokers/projectx.py +0 -1344
  156. lumibot-4.0.0/lumibot/data_sources/databento_data_polars.py +0 -463
  157. lumibot-4.0.0/lumibot/data_sources/polars_mixin.py +0 -372
  158. lumibot-4.0.0/lumibot/entities/chains.py +0 -55
  159. lumibot-4.0.0/lumibot/tools/databento_helper_polars.py +0 -654
  160. lumibot-4.0.0/lumibot/tools/thetadata_helper.py +0 -617
  161. lumibot-4.0.0/tests/backtest/test_pandas_backtest.py +0 -41
  162. lumibot-4.0.0/tests/test_continuous_futures_resolution.py +0 -360
  163. lumibot-4.0.0/tests/test_databento_data.py +0 -493
  164. lumibot-4.0.0/tests/test_options_helper_enhancements.py +0 -181
  165. lumibot-4.0.0/tests/test_projectx_lifecycle_unit.py +0 -131
  166. lumibot-4.0.0/tests/test_thetadata_helper.py +0 -965
  167. {lumibot-4.0.0 → lumibot-4.2.9}/LICENSE +0 -0
  168. {lumibot-4.0.0 → lumibot-4.2.9}/MANIFEST.in +0 -0
  169. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/__init__.py +0 -0
  170. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/alpha_vantage_backtesting.py +0 -0
  171. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/ccxt_backtesting.py +0 -0
  172. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/interactive_brokers_rest_backtesting.py +0 -0
  173. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/pandas_backtesting.py +0 -0
  174. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/backtesting/yahoo_backtesting.py +0 -0
  175. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/__init__.py +0 -0
  176. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/ccxt.py +0 -0
  177. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/example_broker.py +0 -0
  178. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/interactive_brokers.py +0 -0
  179. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/interactive_brokers_rest.py +0 -0
  180. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/brokers/tradier.py +0 -0
  181. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/__init__.py +0 -0
  182. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/configs_helper.py +0 -0
  183. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/drift_rebalancer_logic.py +0 -0
  184. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/grok_helper.py +0 -0
  185. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/perplexity_helper.py +0 -0
  186. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/components/quiver_helper.py +0 -0
  187. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/constants.py +0 -0
  188. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/alpha_vantage_data.py +0 -0
  189. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/bitunix_data.py +0 -0
  190. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/ccxt_backtesting_data.py +0 -0
  191. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/ccxt_data.py +0 -0
  192. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/example_broker_data.py +0 -0
  193. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/exceptions.py +0 -0
  194. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/interactive_brokers_data.py +0 -0
  195. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/interactive_brokers_rest_data.py +0 -0
  196. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/schwab_data.py +0 -0
  197. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/data_sources/tradovate_data.py +0 -0
  198. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/bar.py +0 -0
  199. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/dataline.py +0 -0
  200. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/entities/trading_fee.py +0 -0
  201. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/__init__.py +0 -0
  202. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/bitunix_futures_example.py +0 -0
  203. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/ccxt_backtesting_example.py +0 -0
  204. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/classic_60_40.py +0 -0
  205. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/classic_60_40_config.py +0 -0
  206. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_50_50.py +0 -0
  207. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_50_50_config.py +0 -0
  208. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/crypto_important_functions.py +0 -0
  209. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/drift_rebalancer.py +0 -0
  210. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/forex_hold_to_expiry.py +0 -0
  211. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/futures_hold_to_expiry.py +0 -0
  212. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/lifecycle_logger.py +0 -0
  213. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/options_hold_to_expiry.py +0 -0
  214. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/schedule_function.py +0 -0
  215. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/simple_start_single_file.py +0 -0
  216. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_bracket.py +0 -0
  217. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_buy_and_hold.py +0 -0
  218. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_diversified_leverage.py +0 -0
  219. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_limit_and_trailing_stops.py +0 -0
  220. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_momentum.py +0 -0
  221. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/stock_oco.py +0 -0
  222. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/strangle.py +0 -0
  223. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/example_strategies/test_broker_functions.py +0 -0
  224. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/resources/conf.yaml +0 -0
  225. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/__init__.py +0 -0
  226. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/strategies/session_manager.py +0 -0
  227. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/__init__.py +0 -0
  228. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/alpaca_helpers.py +0 -0
  229. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/bitunix_helpers.py +0 -0
  230. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/black_scholes.py +0 -0
  231. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/debugers.py +0 -0
  232. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/lumibot_time.py +0 -0
  233. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/pandas.py +0 -0
  234. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper_async.py +0 -0
  235. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/polygon_helper_polars_optimized.py +0 -0
  236. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/schwab_helper.py +0 -0
  237. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/types.py +0 -0
  238. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/yahoo_helper.py +0 -0
  239. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/tools/yahoo_helper_polars_optimized.py +0 -0
  240. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/__init__.py +0 -0
  241. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/traders/debug_log_trader.py +0 -0
  242. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/__init__.py +0 -0
  243. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot/trading_builtins/safe_list.py +0 -0
  244. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/dependency_links.txt +0 -0
  245. {lumibot-4.0.0 → lumibot-4.2.9}/lumibot.egg-info/top_level.txt +0 -0
  246. {lumibot-4.0.0 → lumibot-4.2.9}/pyproject.toml +0 -0
  247. {lumibot-4.0.0 → lumibot-4.2.9}/setup.cfg +0 -0
  248. {lumibot-4.0.0 → lumibot-4.2.9}/tests/__init__.py +0 -0
  249. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/__init__.py +0 -0
  250. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_buy_hold_quiet_logs_full_run.py +0 -0
  251. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_failing_backtest.py +0 -0
  252. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_passing_trader_into_backtest.py +0 -0
  253. {lumibot-4.0.0 → lumibot-4.2.9}/tests/backtest/test_strategy_executor.py +0 -0
  254. {lumibot-4.0.0 → lumibot-4.2.9}/tests/fixtures.py +0 -0
  255. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca.py +0 -0
  256. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_auth_fix.py +0 -0
  257. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_backtesting.py +0 -0
  258. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_data.py +0 -0
  259. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_helpers.py +0 -0
  260. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_alpaca_oauth.py +0 -0
  261. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_apscheduler_warnings.py +0 -0
  262. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_asset_auto_expiry.py +0 -0
  263. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_auto_market_inference.py +0 -0
  264. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker.py +0 -0
  265. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker_await_close.py +0 -0
  266. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_broker_time_advance.py +0 -0
  267. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_backtesting_flow_control.py +0 -0
  268. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_aggregate_frequency_normalization.py +0 -0
  269. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_bars_aggregation_timeunits.py +0 -0
  270. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_botspot_handler.py +0 -0
  271. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_botspot_logger.py +0 -0
  272. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_bitunix.py +0 -0
  273. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_cleanup.py +0 -0
  274. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_broker_initialization.py +0 -0
  275. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_cash.py +0 -0
  276. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_ccxt.py +0 -0
  277. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_configs_helper.py +0 -0
  278. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_databento_auto_expiry_integration.py +0 -0
  279. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_helpers.py +0 -0
  280. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_interactive_brokers.py +0 -0
  281. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_live_trading_resilience.py +0 -0
  282. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_logging.py +0 -0
  283. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_mes_symbols.py +0 -0
  284. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_momentum.py +0 -0
  285. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_order.py +0 -0
  286. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_datetime_columns.py +0 -0
  287. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_datetime_index.py +0 -0
  288. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_projectx_live_flow.py +0 -0
  289. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_buy_and_hold.py +0 -0
  290. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_comprehensive.py +0 -0
  291. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_quiet_logs_functionality.py +0 -0
  292. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradier.py +0 -0
  293. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradier_data.py +0 -0
  294. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_tradingfee.py +0 -0
  295. {lumibot-4.0.0 → lumibot-4.2.9}/tests/test_unified_logger.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: lumibot
3
- Version: 4.0.0
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: pandas_ta>=0.3.14b
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
  [![CI Status](https://github.com/Lumiwealth/lumibot/actions/workflows/cicd.yaml/badge.svg?branch=dev)](https://github.com/Lumiwealth/lumibot/actions/workflows/cicd.yaml)
57
68
  [![Coverage](https://raw.githubusercontent.com/Lumiwealth/lumibot/badge/coverage.svg)](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(result_df, self.SOURCE, asset=asset, quote=quote, return_polars=return_polars)
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"""