topstep-backtest 0.1.0__tar.gz → 0.2.1__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.
Files changed (129) hide show
  1. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/.gitignore +3 -0
  2. topstep_backtest-0.2.1/AGENTS.md +876 -0
  3. topstep_backtest-0.2.1/CHANGELOG.md +312 -0
  4. topstep_backtest-0.2.1/PKG-INFO +321 -0
  5. topstep_backtest-0.2.1/README.md +281 -0
  6. topstep_backtest-0.2.1/data/sample_mnq_1m.csv +5851 -0
  7. topstep_backtest-0.2.1/docs/DESIGN.md +298 -0
  8. topstep_backtest-0.2.1/docs/INDICATORS.md +443 -0
  9. topstep_backtest-0.2.1/docs/ROADMAP.md +38 -0
  10. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/docs/TUTORIAL_EMA_CROSSOVER.md +426 -428
  11. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/docs/topstep-rules.md +23 -4
  12. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/ema_cross.py +5 -2
  13. topstep_backtest-0.2.1/examples/run_montecarlo.py +183 -0
  14. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/run_real_data.py +30 -10
  15. topstep_backtest-0.2.1/examples/run_tearsheet.py +57 -0
  16. topstep_backtest-0.2.1/examples/run_windows.py +115 -0
  17. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/pyproject.toml +15 -0
  18. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/__init__.py +1 -1
  19. topstep_backtest-0.2.1/src/topstep_backtest/_render.py +84 -0
  20. topstep_backtest-0.2.1/src/topstep_backtest/data/continuous.py +330 -0
  21. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/engine/backtest.py +36 -1
  22. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/execution/sim_broker.py +231 -3
  23. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/harness.py +215 -45
  24. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/indicators/__init__.py +2 -1
  25. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/indicators/base.py +19 -1
  26. topstep_backtest-0.2.1/src/topstep_backtest/metrics/__init__.py +65 -0
  27. topstep_backtest-0.2.1/src/topstep_backtest/metrics/economics.py +152 -0
  28. topstep_backtest-0.2.1/src/topstep_backtest/metrics/montecarlo.py +378 -0
  29. topstep_backtest-0.2.1/src/topstep_backtest/metrics/overfitting.py +396 -0
  30. topstep_backtest-0.2.1/src/topstep_backtest/metrics/stats.py +821 -0
  31. topstep_backtest-0.2.1/src/topstep_backtest/metrics/walkforward.py +288 -0
  32. topstep_backtest-0.2.1/src/topstep_backtest/metrics/windows.py +314 -0
  33. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/strategy/symbol.py +68 -2
  34. topstep_backtest-0.2.1/src/topstep_backtest/tearsheet/__init__.py +548 -0
  35. topstep_backtest-0.2.1/src/topstep_backtest/tearsheet/_assets/lightweight-charts.LICENSE +221 -0
  36. topstep_backtest-0.2.1/src/topstep_backtest/tearsheet/_assets/lightweight-charts.standalone.production.js +7 -0
  37. topstep_backtest-0.2.1/src/topstep_backtest/tearsheet/_assets/tearsheet.css +176 -0
  38. topstep_backtest-0.2.1/src/topstep_backtest/tearsheet/_assets/tearsheet.js +468 -0
  39. topstep_backtest-0.2.1/tests/golden/artifacts/verdict_failed_mll_s50k.json +1 -0
  40. topstep_backtest-0.2.1/tests/golden/artifacts/verdict_passed_s50k.json +1 -0
  41. topstep_backtest-0.2.1/tests/unit/test_continuous.py +311 -0
  42. topstep_backtest-0.2.1/tests/unit/test_economics.py +146 -0
  43. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_engine.py +166 -3
  44. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_harness.py +24 -1
  45. topstep_backtest-0.2.1/tests/unit/test_montecarlo.py +252 -0
  46. topstep_backtest-0.2.1/tests/unit/test_overfitting.py +165 -0
  47. topstep_backtest-0.2.1/tests/unit/test_stats.py +756 -0
  48. topstep_backtest-0.2.1/tests/unit/test_tearsheet.py +232 -0
  49. topstep_backtest-0.2.1/tests/unit/test_walkforward.py +252 -0
  50. topstep_backtest-0.2.1/tests/unit/test_windows.py +224 -0
  51. topstep_backtest-0.1.0/AGENTS.md +0 -216
  52. topstep_backtest-0.1.0/CHANGELOG.md +0 -49
  53. topstep_backtest-0.1.0/PKG-INFO +0 -250
  54. topstep_backtest-0.1.0/README.md +0 -215
  55. topstep_backtest-0.1.0/docs/DESIGN.md +0 -806
  56. topstep_backtest-0.1.0/docs/GUIDE.md +0 -631
  57. topstep_backtest-0.1.0/docs/ROADMAP.md +0 -43
  58. topstep_backtest-0.1.0/docs/STRATEGY_API.md +0 -615
  59. topstep_backtest-0.1.0/src/topstep_backtest/metrics/__init__.py +0 -5
  60. topstep_backtest-0.1.0/src/topstep_backtest/metrics/stats.py +0 -153
  61. topstep_backtest-0.1.0/tests/golden/artifacts/verdict_failed_mll_s50k.json +0 -1
  62. topstep_backtest-0.1.0/tests/golden/artifacts/verdict_passed_s50k.json +0 -1
  63. topstep_backtest-0.1.0/tests/unit/test_stats.py +0 -212
  64. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/LICENSE +0 -0
  65. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/hand_wired.py +0 -0
  66. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/run_combine.py +0 -0
  67. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/sma_cross.py +0 -0
  68. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/examples/talib_macd.py +0 -0
  69. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/clock/__init__.py +0 -0
  70. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/clock/live_clock.py +0 -0
  71. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/clock/test_clock.py +0 -0
  72. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/core/__init__.py +0 -0
  73. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/core/ids.py +0 -0
  74. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/core/instruments.py +0 -0
  75. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/core/money.py +0 -0
  76. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/core/time.py +0 -0
  77. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/__init__.py +0 -0
  78. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/clean.py +0 -0
  79. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/feed.py +0 -0
  80. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/synthetic.py +0 -0
  81. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/validator.py +0 -0
  82. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/data/wrangler.py +0 -0
  83. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/engine/__init__.py +0 -0
  84. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/execution/__init__.py +0 -0
  85. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/execution/rejections.py +0 -0
  86. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/fills/__init__.py +0 -0
  87. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/fills/bar_fill.py +0 -0
  88. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/fills/fees.py +0 -0
  89. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/fills/path.py +0 -0
  90. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/indicators/library.py +0 -0
  91. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/indicators/talib_adapter.py +0 -0
  92. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/protocols.py +0 -0
  93. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/py.typed +0 -0
  94. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/rules/__init__.py +0 -0
  95. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/rules/kernel.py +0 -0
  96. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/rules/params.py +0 -0
  97. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/strategy/__init__.py +0 -0
  98. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/strategy/base.py +0 -0
  99. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/src/topstep_backtest/strategy/tracker.py +0 -0
  100. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/__init__.py +0 -0
  101. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/conftest.py +0 -0
  102. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/golden/__init__.py +0 -0
  103. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/golden/test_combine_kernel.py +0 -0
  104. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/golden/test_facade_equivalence.py +0 -0
  105. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/golden/test_sugar_equivalence.py +0 -0
  106. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/golden/test_verdict_goldens.py +0 -0
  107. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/parity/__init__.py +0 -0
  108. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/parity/test_broker_conformance.py +0 -0
  109. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/property/__init__.py +0 -0
  110. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/property/test_indicator_props.py +0 -0
  111. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/property/test_kernel_props.py +0 -0
  112. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/property/test_money_props.py +0 -0
  113. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/__init__.py +0 -0
  114. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_bar_fill.py +0 -0
  115. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_clean.py +0 -0
  116. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_clock.py +0 -0
  117. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_data_feed.py +0 -0
  118. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_fees.py +0 -0
  119. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_indicators.py +0 -0
  120. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_instruments.py +0 -0
  121. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_path.py +0 -0
  122. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_sim_broker.py +0 -0
  123. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_symbol_strategy.py +0 -0
  124. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_synthetic.py +0 -0
  125. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_talib_adapter_hardening.py +0 -0
  126. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_time.py +0 -0
  127. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_tracker.py +0 -0
  128. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_validator.py +0 -0
  129. {topstep_backtest-0.1.0 → topstep_backtest-0.2.1}/tests/unit/test_wrangler.py +0 -0
@@ -41,3 +41,6 @@ site/
41
41
 
42
42
  # Hypothesis
43
43
  .hypothesis/
44
+
45
+ # Tearsheet output from examples/run_tearsheet.py (written to the CWD)
46
+ tearsheet.html