Install any skill in seconds. Free to start, no credit card required.
Get Started Free →中国金融市场策略回测质量审查与验证专家。专为A股、期货、基金设计的研究纪律执行者,提供从假设定义到上线门禁的全流程质量把控。
.claude/skills/aifinlab-china-backtest-expert/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 54% | 0% |
专为中国金融市场设计的专业级策略验证框架。不仅是回测执行工具,更是研究纪律的强制执行者和策略质量的守门员。
检查项:
检查项:
A股特殊检查:
成本模型:
检查项:
严格检查:
评估维度:
PASS (通过):
REVISE (需修改):
REJECT (拒绝):
bash# 已进入OpenClaw环境 skillhub install finskillshub/china-backtest-expert
bash# 检查本地回测结果 cd ~/.openclaw/workspace/skills/china-backtest-expert python scripts/quality_gate.py \ --strategy-file ./examples/pe_pb_strategy.py \ --data-source tushare \ --start-date 20180101 \ --end-date 20231231 \ --market ashare \ --output-format json # 完整质量门禁检查 python scripts/quality_gate.py \ --backtest-result ./backtest_result.csv \ --config ./examples/quality_config.yaml \ --report ./quality_report.json
pythonfrom scripts.quality_gate import QualityGate # 初始化门禁 gate = QualityGate( market='ashare', data_source='tushare', cost_model='realistic', strict_level='institution' ) # 运行检查 result = gate.review( strategy_code='./strategy.py', backtest_data='./backtest_df.csv', check_list='all' ) # 获取判决 print(result['verdict']) # PASS | REVISE | REJECT print(result['overall_score']) # 综合质量评分
yaml# quality_config.yaml market: type: ashare board: main st_filter: true min_cap: 1e8 trading: t1_constraint: true price_limit: true halt_handling: skip commission: 0.00025 stamp_duty: 0.001 slippage_model: volume_impact data: adjust: post survivors_bias: correct quality: oos_ratio: 0.3 walk_forward: true cscv_trials: 16 min_sharpe: 1.0 max_drawdown: 0.25 output: format: structured language: zh
schemas/input_schema.jsonschemas/output_schema.jsonpython# 与数据获取Skill协作 from akshare_stock import get_stock_data from china_backtest_expert import QualityGate # 获取数据 data = get_stock_data('600519', start='20200101', end='20231231') # 质量检查 gate = QualityGate() result = gate.review_data(data) # 与策略执行Skill协作 if result['verdict'] == 'PASS': from quant_strategy import run_backtest backtest_result = run_backtest(strategy, data)
MIT License © 2026 FinSkillsHub
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | 28,618 | 7,518 | -74% | 1 | 1 | 0% | 1,418 | 2,146 | +51% | 0 | 0 | — |
case-22 | fail→fail | 25,852 | 28,316 | +10% | 1 | 1 | 0% | 4,708 | 6,870 | +46% | 0 | 0 | — |
case-04 | pass→pass | 4,534 | 7,641 | +69% | 1 | 1 | 0% | 739 | 3,049 | +313% | 0 | 0 | — |
case-01 | fail→fail | 16,215 | 23,305 | +44% | 1 | 1 | 0% | 2,820 | 4,578 | +62% | 0 | 0 | — |
case-02 | pass→pass | 12,337 | 8,698 | -29% | 1 | 1 | 0% | 1,917 | 3,196 | +67% | 0 | 0 | — |
case-05 | pass→pass | 5,305 | 7,534 | +42% | 1 | 1 | 0% | 937 | 3,079 | +229% | 0 | 0 | — |
case-06 | pass→pass | 17,340 | 17,054 | -2% | 1 | 1 | 0% | 2,547 | 4,425 | +74% | 0 | 0 | — |
case-07 | pass→pass | 16,060 | 18,312 | +14% | 1 | 1 | 0% | 2,562 | 4,699 | +83% | 0 | 0 | — |
case-08 | pass→pass | 11,219 | 13,114 | +17% | 1 | 1 | 0% | 1,818 | 3,870 | +113% | 0 | 0 | — |
case-09 | fail→pass | 14,057 | 12,017 | -15% | 1 | 1 | 0% | 2,486 | 3,904 | +57% | 0 | 0 | — |
case-10 | fail→pass | 12,456 | 9,851 | -21% | 1 | 1 | 0% | 2,052 | 3,532 | +72% | 0 | 0 | — |
case-11 | pass→pass | 9,262 | 3,267 | -65% | 1 | 1 | 0% | 1,524 | 2,296 | +51% | 0 | 0 | — |
case-12 | fail→pass | 15,834 | 2,354 | -85% | 1 | 1 | 0% | 2,708 | 2,107 | -22% | 0 | 0 | — |
case-13 | fail→pass | 7,400 | 2,917 | -61% | 1 | 1 | 0% | 1,279 | 2,101 | +64% | 0 | 0 | — |
case-14 | fail→pass | 9,243 | 3,037 | -67% | 1 | 1 | 0% | 1,451 | 2,238 | +54% | 0 | 0 | — |
case-15 | pass→pass | 13,403 | 10,621 | -21% | 1 | 1 | 0% | 2,285 | 3,632 | +59% | 0 | 0 | — |
case-16 | fail→pass | 10,251 | 8,921 | -13% | 1 | 1 | 0% | 1,592 | 3,194 | +101% | 0 | 0 | — |
case-21 | fail→fail | 28,549 | 31,449 | +10% | 1 | 1 | 0% | 5,006 | 7,535 | +51% | 0 | 0 | — |
case-17 | pass→pass | 9,592 | 12,766 | +33% | 1 | 1 | 0% | 1,509 | 3,845 | +155% | 0 | 0 | — |
case-18 | pass→pass | 7,219 | 5,602 | -22% | 1 | 1 | 0% | 1,153 | 2,659 | +131% | 0 | 0 | — |
case-19 | pass→pass | 11,905 | 14,798 | +24% | 1 | 1 | 0% | 2,027 | 4,290 | +112% | 0 | 0 | — |
case-20 | fail→pass | 7,542 | 2,318 | -69% | 1 | 1 | 0% | 1,374 | 2,186 | +59% | 0 | 0 | — |
case-23 | fail→fail | 20,836 | 22,430 | +8% | 1 | 1 | 0% | 3,338 | 5,278 | +58% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 22 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +30 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.