Files
zhutoutoutousan 605faf5310 Prepare source-only public release for develop.
Add cluster audit pipeline, united EA updates, brochure generators, and publication hygiene (gitignore, MT5 path desensitization, pre-upload scan). Remove tracked reports, models, and binary artifacts from the repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 15:03:43 +02:00

64 lines
1.7 KiB
Markdown

# Factor Strategy Tester (MT5-style workflow)
Python app scaffold that mirrors the **MT5 Strategy Tester flow** for **factor investing**:
- Single run backtest
- Parameter optimization (grid search)
- Inputs panel + report panel
- Custom factor expressions with safe operators
- Pluggable strategy engines
## Quick start
```bash
cd strategy-tester
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py
```
## Current capabilities
- Upload CSV with at least:
- `date`
- `asset`
- `close`
- feature columns (e.g. `pe`, `momentum_12m`, `quality`)
- Define factor score expression, e.g.:
- `(z(momentum_12m) + z(quality) - z(volatility_20d)) / 3`
- Rebalance by period and choose top/bottom quantiles
- Long-only or long-short portfolio simulation
- Optimize selected parameters and rank by Sharpe/Return/Drawdown
## Expression language
Supported:
- Arithmetic: `+ - * / **`
- Comparisons: `> >= < <= == !=`
- Boolean: `and or not`
- Parentheses
- Functions:
- `abs(x)`, `log(x)`, `sqrt(x)`
- `z(x)` (cross-sectional z-score per date)
- `rank(x)` (cross-sectional percentile rank per date)
- `clip(x, lo, hi)`
The parser is AST-validated (no raw `eval`).
## Architecture
- `factor_tester/expressions.py`: safe expression compiler/evaluator
- `factor_tester/engine.py`: backtest engine API + default cross-sectional factor engine
- `factor_tester/optimize.py`: optimization runner
- `factor_tester/data.py`: CSV loading and validation
- `app.py`: Streamlit UI
## Next steps
- Walk-forward optimization
- Transaction costs/slippage model
- Multi-factor blend templates (value/size/momentum/quality/low-vol)
- Job queue / parallel optimization workers