FIU (融聚汇) Strategy Backtest
Turn the user's historical trading rule into a local Python strategy, fetch market evidence from FIU MCP automatically, run the deterministic runtime with real microstructure rules, and produce an archived run with an interactive HTML report and a dense Markdown brief — all in one command.
Architecture boundary
- FIU MCP is a market-data source. Its fixed URL is
https://ai.szfiu.com/api/mcp/v2/. - The bundled Python runtime is the numeric replay authority. Do not calculate trades, returns, quantities, or drawdowns in prose.
- Credentials resolve from
FIU_MCP_AUTHenv or a.mcp.jsonfound upward from the working directory — never asked from the user, never stored in requests, strategies, or reports (token_persisted: falseis part of the result audit metadata). - Keep all user strategy source, cached data, requests, and results in the user's project workspace. The Skill installation directory is read-only reusable tooling.
One-command workflow (preferred)
py <skill>/scripts/run_strategy_backtest.py `
--symbol 00700.hk --strategy ma_crossover.py `
--start-date 2023-01-01 --end-date 2026-08-26 `
--initial-cash 500000 --params '{"fast_period": 10, "slow_period": 30}' `
--benchmark 000300.sh --workspace <project>
The pipeline runs: workspace init → request build (market/currency/fees
inferred, catalog defaults merged) → concurrent cursor-paginated evidence
collection (daily bars + dividends/splits + dual price channel) → backtest
execution → archive → HTML + Markdown report rendering. Prior evidence with
the same symbols and date range is reused; pass --force-refresh to
re-collect. Portfolio runs pass --symbols AAPL.us,MSFT.us with a
PortfolioStrategy preset (e.g. rebalance.py).
Manual steps (debugging / offline)
py <skill>/scripts/init_workspace.py --workspace <project>
py <skill>/scripts/build_backtest_request.py --symbol 00700.hk --strategy dca.py --start-date 2024-01-01 --end-date 2026-08-26 --initial-cash 100000 --strategy-params '{"monthly_amount": 5000}' --output <project>/requests/hstech_dca.json
py <skill>/scripts/collect_backtest_evidence.py --symbols 00700.hk --start-date 2024-01-01 --end-date 2026-08-26 --output-dir <project>/data
py <skill>/scripts/run_backtest.py --workspace <project> --strategy strategies/dca.py --request <request.json> --bars <bars.json> --corporate-actions <actions.json> --output <staging-result.json>
py <skill>/scripts/archive_run.py --workspace <project> --strategy-id hstech_dca --request <request.json> --result <result.json> --strategy-file <project>/strategies/dca.py
py <skill>/scripts/render_backtest_report.py --result <result.json> --request <request.json>
py <skill>/scripts/list_runs.py --workspace <project> --kind all --compare
For offline fixture replays add --offline-fixtures <skill>/tests/fixtures
to the pipeline (or --source fixtures to the collector). Offline results
are never presented as FIU-backed evidence.
Strategy behavior
- A local strategy expresses any deterministic, long-only, daily rule. Signals
generated in
on_barfill at the next bar open; a final-bar signal stays unfilled with a warning. Stop/take-profit conditionals trigger against the next bar's OHLC with a conservative stop-first tie-break. - The runtime enforces real microstructure: CN T+1 (today's buys cannot sell today), CN price-limit interception (no buys at limit-up, no sells at limit-down), whole-lot buys (CN 100, HK board lot, US/JP 1), minimum commissions and sell-side stamp tax, and a union-calendar + forward-fill portfolio timeline (no intersection starvation).
- The bar carries a dual channel: raw prices for execution, forward adjusted (前复权) prices for indicator math — ex-dividend/split gaps can never fabricate signals. Preset strategies already follow this rule.
- External cash (
ctx.deposit()) is recorded as a cash flow; the engine reports money-weighted XIRR so contributions are never mistaken for performance, and end-of-run virtual close marks open lots to market so unrealized losses cannot inflate the win rate. - Metrics: Total Return, CAGR, Max Drawdown (+duration), Sharpe, Sortino,
Calmar, XIRR, Win Rate, P/L Ratio, Alpha/Beta/Tracking Error/Information
Ratio vs a benchmark when configured. Missing values are
null, never fabricated zeros.
Reference documents
- references/contracts.md — request/result/manifest schemas.
- references/strategy-api.md — Strategy & PortfolioStrategy development.
- references/metrics-formulas.md — exact metric math.
- references/market-rules.md — lot sizes, T+1, limits, fees.
Safety and output
- Execute only strategy code the user asked to create or use inside the selected project. Review third-party strategy source and its license before running it. Do not place orders or call brokerage APIs.
- Use "historical replay", "under these assumptions", and "observed in the selected period". State that results are not forecasts, personalized investment advice, or guarantees of returns or principal.
微信扫一扫