topstep-backtest 0.2.1__tar.gz → 0.2.2__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.
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/PKG-INFO +10 -5
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/README.md +9 -4
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/.gitignore +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/AGENTS.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/CHANGELOG.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/LICENSE +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/data/sample_mnq_1m.csv +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/docs/DESIGN.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/docs/INDICATORS.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/docs/ROADMAP.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/docs/TUTORIAL_EMA_CROSSOVER.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/docs/topstep-rules.md +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/ema_cross.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/hand_wired.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/run_combine.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/run_montecarlo.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/run_real_data.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/run_tearsheet.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/run_windows.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/sma_cross.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/examples/talib_macd.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/pyproject.toml +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/_render.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/clock/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/clock/live_clock.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/clock/test_clock.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/core/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/core/ids.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/core/instruments.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/core/money.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/core/time.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/clean.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/continuous.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/feed.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/synthetic.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/validator.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/data/wrangler.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/engine/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/engine/backtest.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/rejections.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/sim_broker.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/fills/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/fills/bar_fill.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/fills/fees.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/fills/path.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/harness.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/base.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/library.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/talib_adapter.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/economics.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/montecarlo.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/overfitting.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/stats.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/walkforward.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/windows.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/protocols.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/py.typed +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/rules/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/rules/kernel.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/rules/params.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/strategy/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/strategy/base.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/strategy/symbol.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/strategy/tracker.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/_assets/lightweight-charts.LICENSE +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/_assets/lightweight-charts.standalone.production.js +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/_assets/tearsheet.css +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/_assets/tearsheet.js +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/conftest.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/artifacts/verdict_failed_mll_s50k.json +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/artifacts/verdict_passed_s50k.json +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/test_combine_kernel.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/test_facade_equivalence.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/test_sugar_equivalence.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/test_verdict_goldens.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/parity/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/parity/test_broker_conformance.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/property/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/property/test_indicator_props.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/property/test_kernel_props.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/property/test_money_props.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/__init__.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_bar_fill.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_clean.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_clock.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_continuous.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_data_feed.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_economics.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_engine.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_fees.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_harness.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_indicators.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_instruments.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_montecarlo.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_overfitting.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_path.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_sim_broker.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_stats.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_symbol_strategy.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_synthetic.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_talib_adapter_hardening.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_tearsheet.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_time.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_tracker.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_validator.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_walkforward.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_windows.py +0 -0
- {topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_wrangler.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: topstep-backtest
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Event-driven backtesting framework for Topstep Trading Combine strategies, with backtest/live parity against topstep-sdk.
|
|
5
5
|
Author-email: Tarric Sookdeo <tarricsookdeo@outlook.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -164,8 +164,8 @@ The same report renders as an **interactive HTML tearsheet** — one self-contai
|
|
|
164
164
|
no server and no network, so it opens offline and archives next to the run:
|
|
165
165
|
|
|
166
166
|
```python
|
|
167
|
-
report.to_html("tearsheet.html")
|
|
168
|
-
report.show()
|
|
167
|
+
report.to_html("tearsheet.html") # name the file
|
|
168
|
+
report.show() # or write a temp file and open a browser
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
It draws the candlestick tape with every fill marked, the equity curve against the trailing
|
|
@@ -268,8 +268,13 @@ built wheel into a clean venv and smoke-tests it. **`ruff format --check` is par
|
|
|
268
268
|
|
|
269
269
|
There is a full documentation site — a browsable version of everything below, plus a
|
|
270
270
|
quickstart, a page on reading the report, and an API reference generated from the live
|
|
271
|
-
docstrings
|
|
272
|
-
|
|
271
|
+
docstrings:
|
|
272
|
+
|
|
273
|
+
**<https://tarricsookdeo.github.io/topstep-backtest/>**
|
|
274
|
+
|
|
275
|
+
It is rebuilt from `main` on every push. The site is public; the **source repository is
|
|
276
|
+
not**, so there are no "Edit this page" links and there is no public issue tracker. To read
|
|
277
|
+
it offline, or to preview a change before pushing it:
|
|
273
278
|
|
|
274
279
|
```bash
|
|
275
280
|
uv run --extra docs mkdocs serve # http://127.0.0.1:8000
|
|
@@ -124,8 +124,8 @@ The same report renders as an **interactive HTML tearsheet** — one self-contai
|
|
|
124
124
|
no server and no network, so it opens offline and archives next to the run:
|
|
125
125
|
|
|
126
126
|
```python
|
|
127
|
-
report.to_html("tearsheet.html")
|
|
128
|
-
report.show()
|
|
127
|
+
report.to_html("tearsheet.html") # name the file
|
|
128
|
+
report.show() # or write a temp file and open a browser
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
It draws the candlestick tape with every fill marked, the equity curve against the trailing
|
|
@@ -228,8 +228,13 @@ built wheel into a clean venv and smoke-tests it. **`ruff format --check` is par
|
|
|
228
228
|
|
|
229
229
|
There is a full documentation site — a browsable version of everything below, plus a
|
|
230
230
|
quickstart, a page on reading the report, and an API reference generated from the live
|
|
231
|
-
docstrings
|
|
232
|
-
|
|
231
|
+
docstrings:
|
|
232
|
+
|
|
233
|
+
**<https://tarricsookdeo.github.io/topstep-backtest/>**
|
|
234
|
+
|
|
235
|
+
It is rebuilt from `main` on every push. The site is public; the **source repository is
|
|
236
|
+
not**, so there are no "Edit this page" links and there is no public issue tracker. To read
|
|
237
|
+
it offline, or to preview a change before pushing it:
|
|
233
238
|
|
|
234
239
|
```bash
|
|
235
240
|
uv run --extra docs mkdocs serve # http://127.0.0.1:8000
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/__init__.py
RENAMED
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/rejections.py
RENAMED
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/execution/sim_broker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/library.py
RENAMED
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/indicators/talib_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/montecarlo.py
RENAMED
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/overfitting.py
RENAMED
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/metrics/walkforward.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/src/topstep_backtest/tearsheet/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/golden/artifacts/verdict_passed_s50k.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topstep_backtest-0.2.1 → topstep_backtest-0.2.2}/tests/unit/test_talib_adapter_hardening.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|