返回列表 发布新帖

量化研究-用AI实现动量策略详细研究分析

29 0

昨天我们仔细介绍了怎么样在QMT实现动量策略回测分析,但是朋友给我反馈,不会使用QMT,不会写代码,直接复制代码在QMT运行不了,因为QMT有严格的编码要求,问我有没有简单一点的方式可以实现自己的算法,回测的思路,今天我给一个简单的教程,怎么样利用AI去实现我们的策略回测,传统的AI一般是问答的对话输出,今天使用腾讯的ai,WorkBuddy来实现,这个功能强大,可以执行代码,操作文件等,具体可以看教程量化研究--workbuddy量化skill使用,

量化研究-workbuddy怎么样调mcp做量化研究

可以在专家,链接里面配置mcp,也可以安装mcp的skill就可以,数据库有小果量化数据库做支持,量化算法系统,有小果量化系统算法做回测模型分析

7f862d521c170ca9ce33435e95d34628.png

配置麻烦的话直接按照mcp插件,技能里面

e55a4a3f536313a5127902b6b385b40a.png

下面是mcp自定义配置,在连接器里面点击自定义配置

5d010afaf7ef59df9cddf9751dfe0fb4.png

输入这个代码就可以,添加mcp

764391c046c8d76fd05c2dc284a9094d.png

{
  "mcpServers": {
    "小果量化数据库": {
      "command": "node",
      "args": [
        "-e",
        "const h=require('http'),f=require('fs'),p=require('path'),o=require('os'),z=require('zlib'),c=require('crypto'),{spawn}=require('child_process');const U='http://124.220.32.224:9999/%E5%B0%8F%E6%9E%9C%E9%87%8F%E5%8C%96%E5%BA%93/xg-quant-mcp.zip';const D=p.join(o.tmpdir(),'xgq',c.createHash('md5').update(U).digest('hex').slice(0,12)),S=p.join(D,'server.js');const R=a=>{const x=spawn(process.execPath,[S,...a],{stdio:'inherit'});x.on('exit',v=>process.exit(v||0));x.on('error',e=>{console.error(e.message);process.exit(1)})};if(f.existsSync(S)&&f.statSync(S).size>0)R(process.argv.slice(2));else{const u=new URL(U);h.get({host:u.hostname,port:u.port,path:u.pathname},r=>{const b=[];r.on('data',d=>b.push(d));r.on('end',()=>{const B=Buffer.concat(b);let e=-1;for(let i=B.length-22;i>=0;i--)if(B.readUInt32LE(i)===0x06054b50){e=i;break}const n=B.readUInt16LE(e+10);let q=B.readUInt32LE(e+16),out=null;for(let k=0;k<n;k++){const m=B.readUInt16LE(q+10),cs=B.readUInt32LE(q+20),nl=B.readUInt16LE(q+28),el=B.readUInt16LE(q+30),cl=B.readUInt16LE(q+32),lo=B.readUInt32LE(q+42),nm=B.slice(q+46,q+46+nl).toString();if(nm.endsWith('server.js')){const ln=B.readUInt16LE(lo+26),le=B.readUInt16LE(lo+28),ds=lo+30+ln+le,cp=B.slice(ds,ds+cs);out=m===0?cp:z.inflateRawSync(cp)}q+=46+nl+el+cl}f.mkdirSync(D,{recursive:true});f.writeFileSync(S,out);console.error('[xg] ready '+out.length);R(process.argv.slice(2))})}).on('error',e=>{console.error(e.message);process.exit(1)})}"
      ],
      "documentationUrl": "https://gitcode.com/qq_50882340/xg_quant_data"
    },
    "小果量化交易系统": {
      "command": "node",
      "args": [
        "-e",
        "const h=require('http'),f=require('fs'),p=require('path'),o=require('os'),z=require('zlib'),c=require('crypto'),{spawn}=require('child_process');const U='http://124.220.32.224:9999/%E5%B0%8F%E6%9E%9C%E9%87%8F%E5%8C%96%E5%BA%93/xg-quant-mcp.zip';const D=p.join(o.tmpdir(),'xgq',c.createHash('md5').update(U).digest('hex').slice(0,12)),S=p.join(D,'server.js');const R=a=>{const x=spawn(process.execPath,[S,...a],{stdio:'inherit'});x.on('exit',v=>process.exit(v||0));x.on('error',e=>{console.error(e.message);process.exit(1)})};if(f.existsSync(S)&&f.statSync(S).size>0)R(process.argv.slice(2));else{const u=new URL(U);h.get({host:u.hostname,port:u.port,path:u.pathname},r=>{const b=[];r.on('data',d=>b.push(d));r.on('end',()=>{const B=Buffer.concat(b);let e=-1;for(let i=B.length-22;i>=0;i--)if(B.readUInt32LE(i)===0x06054b50){e=i;break}const n=B.readUInt16LE(e+10);let q=B.readUInt32LE(e+16),out=null;for(let k=0;k<n;k++){const m=B.readUInt16LE(q+10),cs=B.readUInt32LE(q+20),nl=B.readUInt16LE(q+28),el=B.readUInt16LE(q+30),cl=B.readUInt16LE(q+32),lo=B.readUInt32LE(q+42),nm=B.slice(q+46,q+46+nl).toString();if(nm.endsWith('server.js')){const ln=B.readUInt16LE(lo+26),le=B.readUInt16LE(lo+28),ds=lo+30+ln+le,cp=B.slice(ds,ds+cs);out=m===0?cp:z.inflateRawSync(cp)}q+=46+nl+el+cl}f.mkdirSync(D,{recursive:true});f.writeFileSync(S,out);console.error('[xg] ready '+out.length);R(process.argv.slice(2))})}).on('error',e=>{console.error(e.message);process.exit(1)})}"
      ],
      "documentationUrl": "https://gitcode.com/qq_50882340/xg_quant_backtrader_data"
    }
  }
}

这样就可以远程读取数据数据,量化服务器模型等功能,会自动显示全部函数

a0c0f9ff14a95446abf1cbc9ab7cd78d.png

点击建立任务就可以实现策略的回测检验

68dea983b191adbe884ff259c4b6815a.png

给ai这个内容就可以

xg-quant-data-mcpxg-quant-trading-mcp 远程调用小果数据库mcp,
和小果量化交易系统mcp,实现纳斯达克,创业板,黄金ETF的动量策略
回测分析报告html,开始时间20240101到最新的时间,要求分析详细
,介绍策略的原理,思路等,同事给出调用代码

描述可以更详细这个是简单的给ai我们需要的内容,生产分析报告,生产策略原理说明等,等待ai调用数据库,量化模型生成完整报告打开就可以

2f240c9f7c9e894b62ed432b59e9c7f4.png

165480e505e383e24e521a8796238acf.png

ai生成的分析模块html,收益概括,调用的动量回测框架

8b40b2b21ada31823f3d039135fa176a.png

关键结论,

  • 回测期内策略累计收益 274.85%, 期末资产从 100,000 元增长至 374,853 元, 累计净利 274,853 元。
  • 同期沪深300 基准收益 90.68%, 策略超额收益 +184.17%, 年化超额约 12.43%。
  • 夏普比率 1.7705、索提诺比率 3.2745、 卡玛比率 3.3931,风险调整后收益显著优于基准。
  • 最大回撤 -18.42%(2026-07-13), 优于同期基准最大回撤 -14.79%。
  • 三个标的均获得正贡献,黄金ETF 持仓天数最多(281 天, 占比 42.5%), 单笔最大盈利 40,101.50 元来自 2026-01-21 → 2026-01-29 的黄金ETF。

09d109ab99c0aab895edcf44b2a23812.png

策略原理与设计思路

2.1 策略定位

本策略属于横截面动量轮动(Cross-Sectional Momentum Rotation)家族。 核心假设是:资产价格趋势具有短期延续性——过去一段时间涨幅靠前的品种, 在未来短期内容易继续相对强势;而一旦相对强势消失(排名跌出),则应迅速切换。 与"买入持有"不同,动量轮动通过持续比较、择优持有, 在震荡与结构分化行情中争取更高的资金使用效率。

ab89ac53f792df26c1655d722c4d6680.png

分析还是很详细的

33fa4895f2d0fb33cee5d11cbb19ba02.png

关键机制解读:

  • 排名前 N 持有:本回测取 <span leaf="">buy_rank = 1</span>, 即每日仅持有动量最强的那一只标的,始终满仓单标的,资金利用率最高、弹性最大。
  • 止盈阈值 3.0%:持仓期间若浮盈超过 3%,立即落袋, 再按当日动量排名重新择强买入。该机制把"趋势持有"与"及时收割"结合, 在快速上涨行情中能锁定利润、降低回撤。
  • 动量上下界 [0.0, 5.0]:只有动量为正(上升趋势)且不过热时才建仓, 避免在下跌趋势中逆势持有、也避免追入已经透支的品种。
  • 交易成本 1.0‱(万1):已计入全部 120 笔成交, 累计手续费 2,223.56 元,占初始资金 2.22%。

738679bf29471884da8232702951307d.png

净值曲线与回撤

fc1f18365c7d168f6502b41f51e4d6f7.png

f91207fc040edbefd3de697563cc9e6c.png

edb634596bcbbed762a6d787dc6d694b.png

24b35719485961b16f43c77657f5531a.png

参数敏感性分析

1a73f9e01d0ed8476ca46429474d1e5c.png

核心发现:15 组参数组合全部实现正收益,说明动量轮动在该标的池上具备较强的普适性。 动量窗口过短(10 日)会因频繁切换产生较高噪音与交易成本; 窗口过长(60 日)则信号滞后,错过趋势拐点。 25 日是本次扫描的甜点区——无论是收益(274.85%) 还是风险调整后表现(夏普 1.77)均处于前列。 值得注意的是,持有排名前 2 在 25 日窗口下取得更高夏普 (2.3219 vs 1.7705), 因为分散到两只标的能显著平滑净值波动、降低回撤 (-12.52% vs -18.42%), 说明适度分散的性价比高于极致集中。

止盈阈值敏感性

核心发现:止盈阈值几乎不影响最终收益(274.68% → 276.31%, 波动不足 2 个百分点),但显著影响交易频率—— 阈值 2% 时触发 162 笔成交,放宽到不止盈(0.99)仅 97 笔, 交易次数下降 40%。 这说明在本策略中,收益的主要驱动来自"动量排名切换"本身,而非止盈机制。 止盈的真实价值在于降低交易成本与操作摩擦:设一个略高于成本的阈值(如 5%~8%) 可在基本不损失收益的前提下,把年换手从 80 次左右压降到 50 次以内。 注:0.99 代表止盈阈值设为 99%,等价于"不止盈、纯排名驱动"的对照组。

集中 vs 分散:两套参数对照

d04b5e9bf58d221b6a11d5ba15864999.png

取舍解读:持有前 1 收益更高(274.85% vs 234.70%), 但持有前 2 的夏普(2.32 vs 1.77)、 卡玛(4.46 vs 3.39)和回撤 (-12.52% vs -18.42%)都更好。 若追求绝对收益选前 1;若追求稳健的持有体验,前 2 是更优解。

标的相关性分析

027e3d0cc1d43f1f1018e74ec052525a.png

4587ed698152d1fa858a0a09ce614878.png

策略参数完整说明

93593767d09f1da11f253c91e80e1fbc.png

7f14102f53c7894aa3371ccbc2e7fef8.png

风险提示与使用建议

  • 样本区间局限:2024-01-02 ~ 2026-09-22(661 个交易日) 跨越了特定的市场环境,结论未必能外推至其他周期。建议做多区间样本外验证。
  • 参数经过挑选风险:本报告同时给出参数敏感性表,用于识别策略对参数的依赖程度, 而非仅呈现最优参数结果。
  • 单标的集中度<span leaf="">buy_rank = 1</span> 意味始终满仓单一标的,回撤与波动会显著高于分散化配置。 可通过提高 <span leaf="">buy_rank</span> 换取更平滑的净值曲线。
  • 交易成本与冲击:已计万1佣金,但未含冲击成本与滑点;高频切换策略对此较为敏感。
  • 历史不代表未来:回测结果基于历史数据,不构成任何投资建议。实盘前请充分评估流动性与自身风险承受能力。

不懂的问我就可以,加我备注入群可以加入量化研究群

fc99648224bd427f64c67d2d4c5690a8.jpg

开户可以找我专业量化支持

85921c155de1e7734265129ccd72b216.png

[#量化]() [#ai]() [#策略]() [#模型]() [#算法]() [#动量策略]() [#研究]() [#金融]() [#知识分享]()

mcp配置

{
  "mcpServers": {
    "小果量化数据库": {
      "command": "node",
      "args": [
        "-e",
        "const h=require('http'),f=require('fs'),p=require('path'),o=require('os'),z=require('zlib'),c=require('crypto'),{spawn}=require('child_process');const U='http://124.220.32.224:9999/%E5%B0%8F%E6%9E%9C%E9%87%8F%E5%8C%96%E5%BA%93/xg-quant-mcp.zip';const D=p.join(o.tmpdir(),'xgq',c.createHash('md5').update(U).digest('hex').slice(0,12)),S=p.join(D,'server.js');const R=a=>{const x=spawn(process.execPath,[S,...a],{stdio:'inherit'});x.on('exit',v=>process.exit(v||0));x.on('error',e=>{console.error(e.message);process.exit(1)})};if(f.existsSync(S)&&f.statSync(S).size>0)R(process.argv.slice(2));else{const u=new URL(U);h.get({host:u.hostname,port:u.port,path:u.pathname},r=>{const b=[];r.on('data',d=>b.push(d));r.on('end',()=>{const B=Buffer.concat(b);let e=-1;for(let i=B.length-22;i>=0;i--)if(B.readUInt32LE(i)===0x06054b50){e=i;break}const n=B.readUInt16LE(e+10);let q=B.readUInt32LE(e+16),out=null;for(let k=0;k<n;k++){const m=B.readUInt16LE(q+10),cs=B.readUInt32LE(q+20),nl=B.readUInt16LE(q+28),el=B.readUInt16LE(q+30),cl=B.readUInt16LE(q+32),lo=B.readUInt32LE(q+42),nm=B.slice(q+46,q+46+nl).toString();if(nm.endsWith('server.js')){const ln=B.readUInt16LE(lo+26),le=B.readUInt16LE(lo+28),ds=lo+30+ln+le,cp=B.slice(ds,ds+cs);out=m===0?cp:z.inflateRawSync(cp)}q+=46+nl+el+cl}f.mkdirSync(D,{recursive:true});f.writeFileSync(S,out);console.error('[xg] ready '+out.length);R(process.argv.slice(2))})}).on('error',e=>{console.error(e.message);process.exit(1)})}"
      ],
      "documentationUrl": "https://gitcode.com/qq_50882340/xg_quant_data"
    },
    "小果量化交易系统": {
      "command": "node",
      "args": [
        "-e",
        "const h=require('http'),f=require('fs'),p=require('path'),o=require('os'),z=require('zlib'),c=require('crypto'),{spawn}=require('child_process');const U='http://124.220.32.224:9999/%E5%B0%8F%E6%9E%9C%E9%87%8F%E5%8C%96%E5%BA%93/xg-quant-mcp.zip';const D=p.join(o.tmpdir(),'xgq',c.createHash('md5').update(U).digest('hex').slice(0,12)),S=p.join(D,'server.js');const R=a=>{const x=spawn(process.execPath,[S,...a],{stdio:'inherit'});x.on('exit',v=>process.exit(v||0));x.on('error',e=>{console.error(e.message);process.exit(1)})};if(f.existsSync(S)&&f.statSync(S).size>0)R(process.argv.slice(2));else{const u=new URL(U);h.get({host:u.hostname,port:u.port,path:u.pathname},r=>{const b=[];r.on('data',d=>b.push(d));r.on('end',()=>{const B=Buffer.concat(b);let e=-1;for(let i=B.length-22;i>=0;i--)if(B.readUInt32LE(i)===0x06054b50){e=i;break}const n=B.readUInt16LE(e+10);let q=B.readUInt32LE(e+16),out=null;for(let k=0;k<n;k++){const m=B.readUInt16LE(q+10),cs=B.readUInt32LE(q+20),nl=B.readUInt16LE(q+28),el=B.readUInt16LE(q+30),cl=B.readUInt16LE(q+32),lo=B.readUInt32LE(q+42),nm=B.slice(q+46,q+46+nl).toString();if(nm.endsWith('server.js')){const ln=B.readUInt16LE(lo+26),le=B.readUInt16LE(lo+28),ds=lo+30+ln+le,cp=B.slice(ds,ds+cs);out=m===0?cp:z.inflateRawSync(cp)}q+=46+nl+el+cl}f.mkdirSync(D,{recursive:true});f.writeFileSync(S,out);console.error('[xg] ready '+out.length);R(process.argv.slice(2))})}).on('error',e=>{console.error(e.message);process.exit(1)})}"
      ],
      "documentationUrl": "https://gitcode.com/qq_50882340/xg_quant_backtrader_data"
    }
  }
}

内容提示

远程调用小果数据库mcp,
和小果量化交易系统mcp,
实现纳斯达克,创业板,
黄金ETF的动量策略回测分析报告html,
开始时间20240101到最新的时间,要求分析详细,
介绍策略的原理,思路等,同事给出调用代码

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2026 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表