mirror of
https://github.com/KhizarImran/backtestingfx.git
synced 2026-11-02 11:36:31 +00:00
0.1.2 never reached PyPI: its tag was pushed before release.yml existed on main, so no workflow fired and nothing was uploaded. PyPI's latest is still 0.1.1. This release therefore carries everything since 0.1.1 — parallel grid-search optimize(), HTML reports, the O(1) data access fix, and this week's position management — which is a minor bump, not a patch.
2.6 KiB
2.6 KiB
Changelog
[0.2.0] - 2026-08-30
First release to reach PyPI since 0.1.1 — the v0.1.2 tag predated the release
workflow, so 0.1.2 was tagged but never published. Everything listed under 0.1.2
below ships here too.
Added
Strategy.update_sl(id, stop_loss)— move the stop on an open position in place, so a trailing stop doesn't pay spread and commission to close and reopenStrategy.close_partial(id, lot_size)— scale out of a position, leaving the remainder open under the same id
Changed
Brokercloses positions through one internalsettlehelper instead of four copies of the same PnL and commission arithmetic
[0.1.2] - 2026-08-13
Added
Backtest.optimize()— parallel grid search over a vectorised signal function. Simulations run on native threads with the GIL released (src/optimise.rs); 157x faster than loopingrun()over the same grid.strategy_classis now optional, soBacktest(df, cash=...)works for optimization- Standalone HTML reports (
Backtest.plot()) andexamples/html_report.py - Three-way speed benchmark against backtesting.py (
examples/benchmark.py) - Sample EURUSD hourly data is now in the repo, so the examples run on a fresh clone
Fixed
- Data access inside
next()is O(1) per bar instead of O(n) — ~2.6x faster
Changed
numpyis now a direct dependency (it was already pulled in by pandas)- CI runs
cargo clippy -- -D warningsin place ofcargo check
[0.1.1] - 2026-07-05
Added
self.data,self.index,self.cash,self.equityproperties on Strategy- Sharpe ratio in Stats output (unannualized)
__repr__on Position — readable output when printing positions- DataFrame column validation with clear error message
Fixed
- Trade PnL in history now stores net PnL (after exit commission) — per-trade stats were slightly optimistic
Positionpyclass usesfrom_py_objectto fix PyO3 deprecation warning- Removed dead
AttributeErrorswallow in engine.rs
Examples
- Added
examples/sma_cross.py— SMA 10/50 crossover on EURUSD hourly data - Added
examples/compare_bt.py— side-by-side comparison against backtesting.py
[0.1.0] - 2026-06-21
Added
- Event-driven backtesting engine on OHLCV bar data
- Simulated broker with buy, sell, close_all, close_position
- Per-position stop loss and take profit
- Realistic FX lot sizing (0.01 / 0.10 / 1.00) with contract_size and quote_to_account conversion
- Full trade history with PnL per trade
- Stats: return, win rate, avg PnL, best/worst trade, profit factor, max drawdown
- Python API — inherit Strategy, run Backtest
- PyO3 Rust extension with Python wrapper