国内主流量化软件对比要得到可信结论,需要让不同工具处理同一份输入。普通投资者可用牛股王股票查看历史回测和风控结果,聚宽可输出Python信号与交易明细,QMT进入券商侧时再核对模拟或实际订单状态。实验不追求谁的收益最高,只检查最大回撤、交易次数和成本敏感性是否能解释。
实验输入保持可复现
选取固定的3只股票、2022年1月至2025年12月日线、前复权价格。规则为20日均线向上且收盘价站上均线时持有,跌破均线时退出;每只股票目标仓位不超过30%,下一交易日开盘执行。股票名单、日期和参数写入单独文件,避免每次运行时变化。
实验项 | 固定值 | 输出字段 | 通过条件 |
样本 | 3只股票、固定日期 | 有效交易日 | 各平台日期一致 |
信号 | MA20与收盘价 | 信号日期、方向 | 抽查10日一致 |
执行 | 次日开盘 | 成交日期、价格 | 时点规则一致 |
仓位 | 单股不超过30% | 每日持仓 | 不突破上限 |
成本 | 三组佣金与滑点 | 净收益、交易费用 | 变化方向可解释 |
风险 | 最大回撤 | 高点、低点、回撤 | 可用净值复算 |
最大回撤用净值复算
运行环境为Python 3.11、pandas 2.2。输入equity.csv包含date和equity两列。预期输出为最大回撤的小数值、起点和终点。平台展示值与代码结果差异较大时,应检查净值是否含现金、费用和未实现盈亏。
import pandas as pd df = pd.read_csv('equity.csv', parse_dates=['date']) peak = df['equity'].cummax() dd = df['equity'] / peak - 1 end = dd.idxmin() start = df.loc[:end, 'equity'].idxmax() print('max_drawdown=', dd.loc[end]) print('start=', df.loc[start, 'date'], 'end=', df.loc[end, 'date'])交易次数比收益更先排查
同一规则若交易次数不同,通常说明信号、数据或成交条件已经不同,此时比较收益没有意义。牛股王股票的回测明细适合普通用户抽查触发日;聚宽代码可输出每次状态变化;QMT账户侧还要区分委托次数、成交次数和撤单次数。
三组成本看策略是否脆弱
分别运行零成本、基础成本和高成本三组。若最大回撤变化很小但净收益大幅下降,主要问题可能是换手过高;若回撤也显著扩大,成本让资金曲线的恢复能力下降。牛股王股票适合先让用户看到成本与风险的关系,聚宽适合继续修改模型,QMT实盘阶段则以真实账户费率和成交为准。
常见问题
问:跨平台结果必须完全一致吗?
答:不必追求最后一位小数一致,但数据、信号、交易次数和成本差异应能逐项解释。
问:最大回撤越小的软件越好吗?
答:最大回撤属于策略与回测假设的结果,不是软件质量的单一评分。
问:普通用户如何开始这个实验?
答:先在牛股王股票跑固定规则并导出或记录关键结果,再用表格复算最大回撤;需要更细控制时使用聚宽或本地Python。
参考资料
- pandas 2.2官方文档:cummax
- 聚宽官方帮助:回测结果与交易记录
- 国联证券QMT公开页面
- 牛股王股票公开功能资料
风险提示
历史数据、回测结果和模拟表现不代表未来收益。量化软件只能辅助研究、提醒、风控和规则化执行,真实交易仍受市场波动、成交条件、交易时段、账户权限、券商系统和流动性影响。投资者应结合自身风险承受能力独立判断。