1WangToby

自运行量化交易系统(Machine Learning Driven Quant Trading System)

**重大更新:** skill_finance_analysis 作为 submodule 引入到 `tools/tool_finance_analysis`,ZIP 安装自动包含工具库,无需额外克隆

1WangToby 2 1 Updated 2mo ago

Resources

7
GitHub

Install

npx skillscat add 1wangtoby/skill-quant-trading-system

Install via the SkillsCat registry.

SKILL.md

自运行量化交易系统(Machine Learning Driven Quant Trading System)

Name

quant-trading-system

Description

machine learning driven stock prediction, portfolio construction, grid trading strategy, parameter optimization, and strategy learning system. use when user wants to analyze stocks, run backtests, optimize strategies, or select trading strategies dynamically.


系统能力触发说明

用户意图 Skill行为
"帮我预测股票" / "预测" / "选股" predict_production(实时预测)
"帮我做组合" / "组合策略" / "回测组合" portfolio_backtest(组合回测)
"帮我跑网格" / "网格策略" / "网格回测" grid_backtest(网格策略回测)
"帮我找最优参数" / "优化参数" / "搜索网格参数" grid_optimizer(网格参数优化)
"帮我用AI选策略" / "ML预测参数" / "自适应策略" grid_param_predictor(策略学习)

整理工作流

Workflow 1:预测

setup_env → ensure_model → predict

Workflow 2:组合

predict → portfolio_backtest

Workflow 3:网格策略

predict → grid_backtest

Workflow 4:参数优化

grid_optimizer → best params

Workflow 5:策略学习(最重要)

dataset → model → predict params → run strategy

系统解释(非常关键)

❗ 模型不是策略

核心关系:

模型 → 判断方向
网格 → 实现收益路径

说明:

  • 模型(ML)只负责判断"上涨概率"
  • 网格策略负责在震荡市中实现收益
  • 两者结合,形成完整的交易系统

系统能力(完整覆盖)


1️⃣ 数据层(Data Layer)

能力 说明
股票数据获取 真实数据(baostock + eastmoney)
指数数据 benchmark(上证指数等)
数据融合 多源数据融合
最新交易日对齐 自动对齐到最近交易日

2️⃣ 特征工程(Feature Layer)

能力 说明
技术指标 MA / RSI / momentum / volatility(所有指标 shift(1),消除未来泄露)
指数特征 excess return(相对指数收益)
build_features_only 无未来函数特征构建
[FIX] 未来泄露修复 ✅ 所有技术指标都 shift(1),确保 t 时刻特征只使用 t-1 及之前的数据

3️⃣ 模型层(Model Layer)

能力 说明
RandomForest 预测上涨概率
[FIX] 降低复杂度 ✅ n_estimators=50, max_depth=5, min_samples_leaf=5, max_features='sqrt', bootstrap=True
[FIX] 策略驱动训练 ✅ sample_weight = abs(future_return),让模型更关注大波动样本
AUC / 分类指标 模型评估
预测 horizon 5个交易日

4️⃣ 回测层(Backtest Layer)

能力 说明
单股票回测 signal → backtest
组合回测 portfolio_backtest(Top K 选股)
**[FIX] 修复 validation 泄露 ✅ threshold_scan 在 train 内部 K-fold 选阈值,val 只用于模型评估,不参与策略选择
[NEW] 四层数据拆分 ✅ train(60%) / val(20%) / test(10%) / OOS(10%),严格层级,OOS 完全隔离
[NEW] OOS 评估 ✅ 在 OOS 集上做最终评估,输出 oos_total_return / oos_max_drawdown
[NEW] Walk-forward validation ✅ 滚动窗口验证接近真实交易,输出 mean / std / sharpe
[NEW] 自动过拟合检测 ✅ 检测 test_return > oos_return * 1.5,提示策略过拟合
无未来函数 时间分割(time split)
指标 return / drawdown / sharpe / turnover

5️⃣ 实时预测层(Inference Layer)

能力 说明
predict_production 生产级实时预测
最新交易日预测 自动对齐到最新数据
signal生成 BUY / NO_BUY 信号

6️⃣ 网格策略(Execution Layer ⭐)

能力 说明
A股网格 T+1规则 / 涨跌停限制 / 无做空
多grid触发 跳空/大波动支持
grid-aware卖出 每个grid独立卖出
状态模型 Position 类管理持仓

7️⃣ 参数优化(Optimization Layer)

能力 说明
grid_optimizer 网格参数优化器
参数搜索 grid_size / levels / position_size
评分函数 score = return - 0.5 *

8️⃣ 策略学习(Meta Strategy Layer ⭐)

能力 说明
ML预测网格参数 自适应策略参数
dataset构建 X_t → y_t(无未来函数)
rolling window 避免过拟合
无未来函数 feature_time ≤ t,label_time > t

自动化机制(Auto System)

自动更新

触发词: "更新股票预测的skill"、"更新skill"、"升级"

功能:

1. 更新 Skill 本身 → 从 skill-quant-trading-system 拉取
2. 更新工具 → 从 skill_finance_analysis 拉取

实现: scripts/update.sh


自动安装

Step 0: 自动检查环境

逻辑:

如果项目目录不存在 → git clone
如果 requirements.txt 存在 → pip install

实现: scripts/setup_env.sh


自动训练

Step 1: 自动检查模型

逻辑:

检查 models/{stock_code}.pkl 是否存在
如果不存在 → 自动调用 train_classifier.py 训练

实现: scripts/ensure_model.sh


自动更新模型

Step 2: 自动更新模型(可选)

逻辑:

读取 meta.json 中的 last_train_date
如果 (today - last_train_date) > 7 天 → 自动重训

实现: scripts/auto_retrain.sh


输出格式规范

实时预测输出

📊 Predictions

排名表格:
| 排名 | 股票代码 | 股票名称 | 概率 | 信号 |
|------|----------|----------|------|------|
| 1 | 600519.SH | 洵州茅台 | 0.81 | ✅ BUY |

Top Picks 总结:
🏆 Top 3 推荐:
1. ✅ 贵州茅台 (600519.SH) - 概率 0.81
2. ✅ 五粮液 (000858.SZ) - 概率 0.75
3. ✅ 招商银行 (600036.SH) - 概率 0.72

网格回测结果

📊 Grid Strategy Results

股票代码: 600036.SH
回测天数: 500

总收益: 18.5%
年化收益: 9.2%
最大回撤: -8.3%
夏普比率: 1.42

网格参数:
  grid_size: 2.00%
  grid_levels: 5
  position_size: 10.0%

参数优化结果

📆 Best Grid Params

股票代码: 600036.SH

最优参数:
  grid_size: 0.02 (2.00%)
  grid_levels: 5
  position_size: 0.1 (10.0%)

最优表现:
  total_return: 18.5%
  max_drawdown: -8.3%
  score: 0.1435

ML策略结果

🤖 ML Selected Params

股票代码: 600036.SH

ML预测参数:
  grid_size: 0.02 (2.00%)
  grid_levels: 5
  position_size: 0.1 (10.0%)

模型评估:
  train_score: 0.1523
  test_score: 0.1489
  overfit_gap: 0.0034

⚠️ 关键说明:
  - 特征只使用历史数据
  - 标签来自未来窗口
  - 使用rolling window避免过拟合

关键约束

❌ 禁止

  • 在 Skill 内重新实现模型逻辑
  • 在 Skill 内重新实现网格策略逻辑
  • 修改项目核心代码
  • 使用未来数据
  • 无限重训模型(必须有时间限制)

✅ 必须

  • 使用已有 Python 脚本
  • 使用 skill_finance_analysis 中的所有模块
  • 按 probability 降序排序
  • 检查 delay_days == 0
  • 输出结构化 + 可读的结果
  • 所有操作必须有日志
  • 自动化必须安全(有检查点)
  • 输出必须结构化 + 可解释

工作目录(重要更新)

目录结构(v5.1.0+)

skill_finance_analysis 已作为 submodule 包含在本项目中,无需额外安装。

默认行为:

  • 脚本自动检测工具目录,支持开发模式和安装模式
  • 可以在任意位置安装,通过 SKILL_WORKDIR 环境变量指定工作目录
  • 所有模型、输出都保存在 tools/tool_finance_analysis/

环境变量(可选):

# 显式指定工作目录
export SKILL_WORKDIR="/path/to/your/workspace"

安装后的最终目录结构:

你的工作目录/skill/
└── skill-quant-trading-system/          # 本项目
    └── tools/tool_finance_analysis/    # skill_finance_analysis(submodule)
        ├── models/                      # 训练好的模型
        ├── outputs/                     # 输出结果
        ├── data_cache/                  # 数据缓存
        └── ...

tools 目录结构(submodule 引入模式,当前)

当前状态:

  • skill_finance_analysis 已作为 submodule 引入到 skill-quant-trading-system/tools/
  • 所有核心文件在 tools/tool_finance_analysis/
  • 所有调用都指向 tools/ 目录下的脚本

目录结构:

skill-quant-trading-system/
├── SKILL.md
├── agents/
├── scripts/
├── tools/
│   └── tool_finance_analysis/  # submodule
│       ├── prediction/
│       │   └── train_classifier.py
│       ├── strategy/
│       │   ├── grid_strategy.py
│       │   ├── grid_backtest.py
│       │   ├── grid_optimizer.py
│       │   ├── grid_param_dataset.py
│       │   ├── grid_param_model.py
│       │   └── grid_param_predictor.py
│       ├── data/
│       │   ├── stock_data_fetcher.py
│       │   └── classification_features.py
│       ├── models/
│       ├── outputs/
│       └── ...
└── references/
    ├── system_overview.md
    ├── usage.md
    ├── interpretation.md
    ├── grid_strategy.md
    └── grid_ml.md

脚本调用示例

# 所有脚本调用都指向 tools/ 目录下
cd skill-quant-trading-system

# 实时预测(5只股票)
./scripts/predict_production.py \
  --stock_codes 600519.SH,000858.SZ,600036.SH,600595.SH,601888.SH \
  --stock_names 贵州茅台,五粮液,招商银行,中孚实业,伊利股份 \
  --model_dir ./tools/tool_finance_analysis/models \
  --output_dir ./tools/tool_finance_analysis/outputs/predictions \
  --benchmark_code 000300.SH

# 组合回测
./scripts/portfolio_backtest.py \
  --stock_codes 600519.SH,000858.SZ,600036.SH \
  --model_dir ./tools/tool_finance_analysis/models \
  --output_dir ./tools/tool_finance_analysis/outputs/portfolio \
  --top_k 3

# 网格回测(单只股票)
./scripts/grid_backtest.py \
  --stock_code 600036.SH \
  --grid_size 0.02 \
  --grid_levels 5 \
  --position_size 0.1 \
  --initial_capital 100000 \
  --model_dir ./tools/tool_finance_analysis/models

# 参数优化
./scripts/grid_optimizer.py \
  --stock_code 600036.SH \
  --grid_sizes 0.01,0.02,0.03 \
  --grid_levels 3,5,7 \
  --position_sizes 0.1,0.2 \
  --model_dir ./tools/tool_finance_analysis/models

# 策略学习(ML预测参数)
./scripts/grid_param_predictor.py \
  --stock_code 600036.SH \
  --days 100 \
  --model_dir ./tools/tool_finance_analysis/models

References

参考文件:

  • references/system_overview.md - 系统概览:数据 → 模型 → 策略 → 执行 → 优化
  • references/usage.md - 完整使用指南(所有命令)
  • references/interpretation.md - 结果解读(概率 / 网格参数 / 回测指标)
  • references/grid_strategy.md - A股网格策略特点、模型×网格关系
  • references/grid_ml.md - 网格参数机器学习(终极版:数据泄露修复 + 滚动窗口)

版本: 6.0.0(skill_finance_analysis 作为 submodule 包含在本项目中)
最后更新: 2026-03-27
重大更新: skill_finance_analysis 作为 submodule 引入到 tools/tool_finance_analysis,ZIP 安装自动包含工具库,无需额外克隆