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.

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