操作手册

咨询 & 讨论

对因子策略有疑问?想交流选股心得?欢迎通过以下方式联系我们。
添加时请备注来源「QuantScreen」,方便通过验证。

WeChat QR 微信
WhatsApp QR WhatsApp
LINE QR LINE
新手快速上手

第一次使用?按下面 3 步即可完成一次完整的选股:

  1. 选市场 — 页面顶部点选「美股 / 港股 / 日股」标签
  2. 选因子 + 点筛选 — 新手推荐选 风险调整动量,Top N 填 30,直接点「筛选」
  3. 看结果 — 表格按因子得分排序,点击任意行可展开个股详情(走势图、财务指标)

想要更精确的结果?展开「高级过滤」,参考下方推荐值设置负面筛选条件。

1. 工具概述

Biz QuantScreen 是本地量化因子选股工具。它读取本地历史价格数据,用学术验证的因子策略对全市场股票打分排名,帮你快速缩小候选范围。

核心概念(通俗解释)
  • 因子 — 可以理解为「选股指标」。例如「动量因子」就是选过去涨得好的股票,学术研究表明这类股票往往会继续涨
  • 负面筛选 — 先把明显不好的股票排除掉(成交太少买不到的、波动太大风险太高的、短期暴涨可能要回调的)
  • 复合评分 — 不只看一个指标,把动量、质量、价值等多个维度加权求和,避免单一指标选出偏科生

2. 因子策略详解

2.1 价格因子 即时计算

只需本地价格数据,无需联网,通常 1-5 秒出结果。

风险调整动量 ★★★★★ 新手首选

动量 ÷ 波动率。涨得多且涨得稳的排前面,相当于夏普比率思路。

原理:不只看涨了多少,还看涨得稳不稳。同样涨 50%,平稳上涨的比大起大落的排名更高。这是最均衡的单因子策略。

推荐搭配:成交额过滤 + 波动率上限 0.8 + 近1月涨幅上限 0.3
12-1 动量 ★★★★☆

过去一年涨了多少(跳过最近1个月,避免短期噪音)。

原理:学术上「动量效应」是最稳健的异象之一——过去一年表现强的股票,未来3-12个月大概率继续强。跳过最近1个月是为了规避短期反转效应。

推荐搭配:成交额过滤 + 近1月涨幅上限 0.3(关键!否则容易选到暴涨垃圾股)
6-1 动量 ★★★☆☆

和 12-1 动量类似,但只看半年。对中期趋势变化更敏感,换手更快。

适合中期波段操作。与 12-1 动量搭配使用效果更好(动量质量复合已自动包含两者)。

推荐搭配:成交额过滤 + 近1月涨幅上限 0.3
低波动 ★★★★☆

过去一年价格波动最小的股票,按波动率从低到高排列。

原理:「低波动异象」——学术研究发现低波动股票长期收益反而不低于高波动股票,但回撤(最大亏损幅度)小得多。适合追求稳健、讨厌坐过山车的投资者。熊市表现尤其好。

推荐搭配:成交额过滤 + 最低股价过滤(排除仙股)。不需要设近1月涨幅上限(低波动股本身不太会暴涨)
反转因子 ★★★☆☆ 高风险

选最近一个月跌幅最大的股票,赌它们反弹。按跌幅从大到小排列。

原理:短期超跌反弹。但风险很高——跌得多的可能是基本面出了问题,继续跌。必须搭配 F-Score 和 Z-Score 过滤,排除掉真正有问题的公司。

推荐搭配:成交额过滤 + F-Score ≥ 5 + Z-Score 危险区排除(缺一不可,否则容易踩雷)
52周新高接近度 ★★★☆☆

当前价格离过去一年最高价有多近(0~1之间,越接近1越强)。

原理:接近历史新高的股票处于强势区间,突破新高后往往有进一步上涨空间。适合追踪趋势突破的投资者。

推荐搭配:成交额过滤 + 波动率上限 0.8 + 近1月涨幅上限 0.3
放量突破 ★★★☆☆

近5天平均成交量是60天平均的几倍。放量通常预示着市场关注度突然增加。

原理:成交量异常放大可能意味着主力资金介入、重大消息刺激或趋势启动。但也可能是出货信号,需结合价格方向判断。适合短线关注,不建议作为唯一选股依据。

推荐搭配:成交额过滤 + 波动率上限 0.8。结合其他因子(如动量为正)交叉验证效果更好

2.2 基本面因子 需调用 API

需要联网调用 yfinance 获取财务数据,首次约 1-2 分钟。结果更全面但速度较慢。

动量质量复合 ★★★★★ 综合首选

四合一:40%长期动量 + 20%中期动量 + 20%质量 + 20%价值/低波。

原理:不依赖单一维度。动量确保趋势向好,质量确保公司经营健康,价值确保估值合理,低波确保风险可控。是本工具最全面的策略。

推荐搭配:近1月涨幅上限 0.3 + Z-Score 危险区排除 + 成交额过滤。详见下方 4.1 手把手教程
Piotroski F-Score ★★★★☆

9 项财务体检打分:盈利能力(ROA、现金流)+ 杠杆安全(负债率、流动性)+ 经营效率(利润率、周转率)。

0-9分。8-9分=财务非常健康,5-7分=正常,0-3分=有财务隐患。适合作为「安全网」——从别的因子选出的股票里,再用 F-Score 排除财务差的。

推荐搭配:成交额过滤 + Z-Score 危险区排除。也适合做其他策略的「叠加过滤器」(设 F-Score ≥ 4)
Altman Z-Score ★★★☆☆

预测公司未来2年破产概率的经典模型。>2.99=安全,1.81~2.99=灰色区,<1.81=危险。

主要用途不是选股,而是排雷。建议作为其他策略的辅助过滤器(勾选「排除 Z-Score 危险区」)而不是单独使用。

推荐搭配:通常不单独用,配合其他因子 + 勾选 Z-Score 危险区排除
Magic Formula ★★★★☆

Joel Greenblatt 的「神奇公式」:同时找 ROIC(资本回报率)高且估值低的公司。

原理:ROIC 高意味着公司赚钱能力强,估值低意味着市场价格便宜。两者兼具 = 好公司 + 好价格。适合中长期价值投资。

推荐搭配:F-Score ≥ 4 + Z-Score 危险区排除 + 成交额过滤
价值复合 ★★★★☆

综合三个估值指标:1/PE(市盈率倒数)+ 1/PB(市净率倒数)+ 股息率。三者越高越便宜。

原理:单看 PE 可能有偏差(周期股 PE 低不一定便宜),综合三个维度更稳健。适合巴菲特式的「用好价格买好公司」。

推荐搭配:F-Score ≥ 5(确保便宜不是因为公司差)+ Z-Score 危险区排除
质量复合 ★★★★☆

综合 ROE(净资产收益率)+ ROA(总资产收益率)+ 利润率。找经营质量最好的公司。

原理:高 ROE + 高 ROA = 公司用股东的钱和借来的钱都能高效赚钱。高利润率 = 产品或服务有竞争力。适合长期持有高质量白马股。

推荐搭配:Z-Score 危险区排除 + 成交额过滤。可加波动率上限 0.8 进一步过滤

2.3 动量质量复合 — 算法说明

运算步骤
  1. 先用「风险调整动量」预选出约 150 只候选股(动量+稳定性初筛)
  2. 对这 150 只调用 yfinance 获取财务数据,算出质量分和价值分
  3. 在候选池内对每个维度做 0~1 的百分位排名
  4. 加权求和:0.40×动量12M + 0.20×动量6M + 0.20×质量 + 0.20×(价值+低波)/2

建议搭配「排除近1月涨幅 > 0.3」,可以有效过滤掉短期暴涨的过热股票。

3. 负面筛选参数 — 推荐设置

负面筛选 = 先排除不要的,再从剩下的里面选好的。所有参数填 0 表示不启用该过滤。

参数是什么为什么要设推荐值
最低股价 排除股价低于此值的股票 低价股(仙股)波动大、流动性差,容易踩雷 美股:5 港股:1 日股:100
填 0 = 不限制
最低日均成交额 排除 20 日平均成交额低于此值的股票 成交额太低 = 买卖困难,价差大,实际操作成本高 美股:5000000(500万美元) 港股:3000000(300万港币) 日股:100000000(1亿日元)
这是最重要的过滤器之一,强烈建议设置
最高年化波动率 排除年化波动率超过此值的股票 波动率太高 = 风险太大,持有体验差 建议:0.8(80%年化波动)
正常股票在 0.2~0.5,超过 0.8 的通常是投机性很强的标的
最少交易天数 排除上市不足此天数的股票 新上市股票数据不足,因子计算不准确 建议:252(1年)
保持默认即可。252 个交易日 ≈ 1 个自然年
排除 F-Score 低于 排除财务健康评分低于此值的股票 财务差的公司即使趋势好也可能暴雷 建议:4
F-Score 满分 9,4 分以下基本面较差。仅对基本面因子生效
排除 Z-Score 危险区 排除 Altman Z-Score < 1.81 的公司 Z-Score 低于 1.81 意味着有较高的破产风险 建议:排除
仅对基本面因子生效。使用价格因子时此项不起作用
排除近1月涨幅超过 排除最近 21 个交易日涨幅超过此比例的股票 短期暴涨的股票往往面临回调风险,动量因子容易选到这类「过热股」 建议:0.3(即 30%)
这是动量策略的关键保护参数。设为 0.3 表示排除近1月涨超 30% 的股票

4. 推荐使用组合

以下是经过验证的策略组合,可以直接使用。推荐程度用星级表示。

稳健趋势跟踪 ★★★★★

找过去涨得好且涨得稳的股票,同时排除短期过热和财务差的公司。新手最推荐。

因子风险调整动量
Top N30
最低日均成交额按市场设置(见上方推荐)
最高波动率0.8
近1月涨幅上限0.3
F-Score 下限4(可选)
动量质量复合 ★★★★★

最全面的策略,价格趋势+财务质量+估值三重保障。需要等待 API,但结果最可靠。

因子动量质量复合
Top N30
最低日均成交额按市场设置
近1月涨幅上限0.3
Z-Score 危险区排除
价值投资 ★★★★☆

找被市场低估且财务健康的公司。适合耐心持有、等待价值回归的投资者。

因子价值复合因子
Top N30
F-Score 下限5
Z-Score 危险区排除
低波动防守 ★★★★☆

选波动最低的股票,适合熊市或不确定性高的阶段。长期收益率不低,但回撤小得多。

因子低波动
Top N30
最低日均成交额按市场设置
最低股价按市场设置
逆向抄底(高风险) ★★★☆☆

选近期跌幅最大的股票赌反弹。风险高,建议搭配 F-Score 过滤避开基本面有问题的票。

因子反转因子
Top N20
最低日均成交额按市场设置
F-Score 下限5
Z-Score 危险区排除
放量突破 ★★★☆☆

捕捉近期成交量异常放大的股票,可能是主力资金介入信号。适合短线关注。

因子放量突破
Top N20
最低日均成交额按市场设置
最高波动率0.8

4.1 手把手教程:动量质量复合策略

以下以最推荐的「动量质量复合」为例,按步骤教你怎么设置。三个市场的具体填值都列出来了。

Step 1:选市场

页面顶部有「美股 / 港股 / 日股」标签,点击你想筛选的市场。

Step 2:选因子

「因子策略」下拉框 → 拉到下面的「基本面因子」分组 → 选择 「动量质量复合」

Step 3:设置 Top N

30(默认值,不用改)。表示最终展示排名前 30 的股票。

Step 4:展开高级过滤

点击「高级过滤 & 负面筛选」展开面板,按下表填入各参数:

参数日股 (TSE)美股 (USA)港股 (HKEX)
最低股价10051
最低日均成交额100000000
(1亿日元)
5000000
(500万美元)
3000000
(300万港币)
最高年化波动率0.8 (三个市场通用)
最少交易天数252 (默认值,不用改)
排除 F-Score 低于4 (排除财务较差的公司)
排除 Z-Score 危险区排除 (下拉选「排除」,过滤破产风险)
排除近1月涨幅超过0.3 (排除近1月涨超 30% 的过热股,关键参数
Step 5:点击「筛选」

因为是基本面因子,系统会调用 yfinance API 获取财务数据,请等待 1-2 分钟,进度条走完后结果会自动展示在下方表格中。

Step 6:查看结果

结果表按复合得分从高到低排列。点击任意行可展开个股详情(走势图、财务指标)。如需保存,点右上角「下载 CSV」。

4.2 手把手教程:风险调整动量(快速版)

如果不想等 API,用这个策略 秒出结果

参数日股美股港股
因子策略风险调整动量(价格因子分组内)
Top N30
最低股价10051
最低日均成交额10000000050000003000000
最高年化波动率0.8
排除近1月涨幅超过0.3

这个组合只用价格数据,不需要联网,点筛选后 1-5 秒出结果。日常快速扫描首选。

5. Dashboard 持仓管理

使用步骤
  1. 注册 & 登录 — 点击右上角「注册」,等管理员审核通过后即可使用全部功能
  2. 添加自选股 — 在筛选结果表格中,点击每行左侧的「+」按钮,输入买入价和数量
  3. 查看 Dashboard — 顶部导航点「Dashboard」,查看:
    • 总投入金额 vs 当前市值
    • 总盈亏(金额和百分比)
    • 持仓分布饼图
    • 个股盈亏柱状图
  4. 刷新价格 — 点击「刷新价格」按钮获取最新行情

6. 结果字段说明

价格因子结果列

列名含义怎么看
代码股票代码点击可展开详情
公司名公司名称首次加载可能需几秒获取
最新价最近收盘价
因子值当前所选因子的计算结果排序依据,越靠前越好
日涨幅最近 1 个交易日涨跌幅正数=涨,负数=跌
月涨幅最近 21 个交易日涨跌幅反映近一个月趋势
季涨幅最近 63 个交易日涨跌幅反映近一个季度趋势
52周高/低过去一年的最高价和最低价判断当前价格在什么位置
波动率252日年化波动率0.3=低,0.5=中,>0.8=高
mom_12_112-1 动量原始值过去12月(跳过近1月)的涨幅
mom_6_16-1 动量原始值过去6月(跳过近1月)的涨幅

基本面因子额外列

列名含义怎么看
F-ScorePiotroski 财务健康评分0-9 分,≥7 优秀,≤3 较差
Z-ScoreAltman 破产预测分数>2.99 安全,<1.81 危险
P/E市盈率越低越便宜,负数=亏损
P/B市净率<1 可能被低估
ROE净资产收益率>15% 优秀
股息率年化股息率>3% 算高股息

7. 常见问题

Q: 动量因子选出了短期暴涨的垃圾股怎么办?

A: 这是动量策略的常见问题。解决方法:启用「排除近1月涨幅超过」,设为 0.3(30%),可以有效过滤掉短期暴涨的过热股。也可以直接用「动量质量复合」因子,它自带基本面过滤。

Q: 「动量质量复合」和「风险调整动量」怎么选?

A: 风险调整动量只看价格数据,速度快(秒出结果),适合快速筛选。动量质量复合额外引入了财务质量和价值因子,需要调 API(约1-2分钟),但结果更全面可靠。
建议:日常快速扫描用前者,认真选股时用后者。

Q: 基本面因子为什么这么慢?

A: 因为需要逐个调用 yfinance API 获取每家公司的财务报表。约 150 只候选股需要 1-2 分钟,请耐心等待进度条。

Q: 不同市场的成交额单位是什么?

A: 美股=美元,港股=港币,日股=日元。例如美股填 5000000 表示日均成交额不低于 500 万美元。

Q: CSV 下载包含哪些数据?

A: 包含表格中所有列,含 mom_12_1 和 mom_6_1 动量原始值。文件编码为 UTF-8 BOM,Excel 可直接打开。

Q: 因子值的数字怎么理解?

A: 因子值本身的绝对大小不重要,重要的是排名。排在前面的就是当前策略下最优的候选。不同因子的数值范围不同,不要跨因子比较数字大小。

8. 买入评分 (Buy Score)

评分说明

买入评分(0-100)是系统对每只筛选结果的综合推荐度评估,分数越高表示综合指标越优秀。

分数区间含义显示颜色
80-100强烈推荐 — 多维度指标均优秀绿色
50-79值得关注 — 部分指标良好黄色
0-49谨慎考虑 — 需结合其他信息判断红色
评分成分
  • 动量得分 — 基于 12-1 和 6-1 动量排名
  • 基本面得分(仅基本面因子)— F-Score、Z-Score、ROE 等财务指标
  • 风险调整 — 波动率越低,加分越高

买入评分仅作为参考,不构成投资建议。请结合个股详情页的完整信息做出决策。

9. 卖出信号 (Sell Signal)

功能入口

在 Dashboard 持仓列表中可以看到每只股票的卖出信号评分(0-100),0 表示安全持有,100 表示强烈建议卖出。

四维度评估
维度权重说明
动量衰减30%12个月动量转负或大幅下降时触发
回撤止损25%从持仓最高价回撤幅度越大,信号越强
基本面恶化25%F-Score 降至3以下,或Z-Score进入危险区
集中度风险20%单只持仓占比超过30%时触发警告

卖出信号基于量化模型自动计算。信号值 ≥70 时建议认真考虑减仓,40-69 保持关注,<40 可安心持有。

10. 会员等级 & 筛选次数

系统采用 1-5 星会员等级制度,不同等级对应不同的每日筛选次数上限。

等级默认每日筛选次数
★ Tier 1(新用户)5 次
★★ Tier 220 次
★★★ Tier 350 次
★★★★ Tier 4200 次
★★★★★ Tier 5不限

管理员可在「设置」页面自定义各等级的筛选次数上限。每日零点重置计数。

页面顶部用户名旁的星标显示您的当前等级。如需升级请联系管理员。

11. 社区持仓

功能说明

社区功能允许用户公开分享自己的持仓信息,包括持仓明细和购买证明。

发布流程
  1. 在筛选结果中点击 + 将股票添加到自选股,输入买入价和数量
  2. 进入 Dashboard → 找到目标持仓 → 点击「发布到社区」
  3. 上传购买证明截图(jpg/png/webp,≤5MB)
  4. 发布成功后其他用户可在「社区」页面看到您的持仓
社区页面内容
  • 热门持仓排名 — 按持有人数和总持有量排序的热门股票
  • 用户持仓 — 各用户的公开持仓详情,含买入价、数量、购买证明

购买证明用于建立社区信任。仅上传了证明的持仓会在社区页面展示。

搜索功能

在筛选页面顶部的搜索框中输入股票代码(支持部分匹配),系统会实时显示匹配结果。搜索不消耗筛选次数。

  • 搜索结果显示代码、公司名、最新价、行业
  • 点击搜索结果可直接打开个股详情页
  • 搜索范围为当前选中市场的所有股票
对比功能

在搜索结果中点击 + 按钮将股票添加到对比列表(最多10只),然后点击「开始对比」。

  • 对比表格展示:当前价、P/E、P/B、ROE、股息率、F-Score、Z-Score、市值、ROIC等12项指标
  • 每次对比消耗 1 次筛选额度(因为需要调用 API 获取财务数据)
  • 对比完成后可继续添加/移除股票重新对比

搜索功能仅在登录后可见。对比适合在筛选缩小范围后,对少量候选股做深入对比分析。

13. 走势图 & 实时盯盘

导航栏 "走势图"(路径 /chart):moomoo App 风格的 K 线工具,支持 9 档时间粒度、9 种指标、缩放拖拽、十字光标、实时更新。

  • 时间粒度:1 分 / 3 分 / 5 分 / 15 分 / 30 分 / 60 分 / 日 / 周 / 月。每切一档就重新拉一段历史。
  • 主图指标:MA / EMA / BOLL / SAR / BBI(多选叠加,默认 MA)。
  • 副图指标:成交量 / MACD / KDJ / RSI(多选叠加,默认成交量)。
  • 实时刷新:右上角开关。开启时每 2.5 秒拉一次最新 1-2 根 K 线,调用 chart.updateData() 只增量更新最后那根(不整图重绘)。切到别的浏览器 tab 自动暂停(省 API 配额)。
  • 数据源:US/HK 走 moomoo(实时),JP 走 Yahoo Finance(约 15 分钟延迟)。状态栏右侧的徽章会清楚标示。

右上角 "应用策略 →" 按钮会带着当前 ticker / market / ktype 跳到 §14 回测页,自动预填配置。

14. 策略回测

导航栏 "回测"(路径 /backtest)。4 种策略来源:

  1. 内置模板:MA 金叉 / RSI 超卖 / BOLL 突破(详见 14.1)
  2. 自定义代码:写一个 def on_bar(bar, ctx): return Action.BUY/SELL/CLOSE/HOLD(详见 14.5)
  3. 已保存策略:之前命名保存的,一键复用
  4. 网格搜索:参数笛卡尔积自动跑一遍,找出最优组合(详见 14.6)

14.1 内置策略模板详解

① MA Cross — 双均线金叉死叉

逻辑:当快线(默认 5)从下方穿越慢线(默认 20)→ 买入;快线从上方穿越慢线 → 卖出。

背后假设:价格趋势有惯性,"短期均线翻越长期均线"是趋势启动/反转的信号。

能赚钱的市场:单边趋势行情(牛市初段、熊市初段)。不能赚钱的市场:横盘震荡(连续假突破,俗称"打脸"),损耗手续费 + 反复止损。

参数选择

  • ma_fast 快线:典型 5 / 10 / 13。越小越敏感,假信号越多。
  • ma_slow 慢线:典型 20 / 50 / 100。越大越迟钝,趋势确认晚但更稳。
  • 常见组合:5/20(短线)、20/50(中线)、50/200(长线,也叫"死亡交叉"判据)。

典型陷阱:在大牛股(如 AAPL 长期上涨)上 MA 金叉策略往往跑输 buy & hold —— 因为每次回调它会"卖出止损",错过后面的反弹。这是趋势策略的固有代价

② RSI Oversold — 相对强弱指标的超卖反弹

逻辑:RSI(14) < 30(超卖区)→ 买入;RSI > 70(超买区)→ 卖出。

背后假设:价格短期偏离均值后会"回归均值",超卖意味着便宜。

能赚钱的市场:横盘震荡 / 慢牛回调。不能赚钱的市场:单边大跌(一只股从 100 跌到 30,RSI 全程超卖也救不回来)。

参数选择

  • rsi_period:默认 14(行业标准)。改 7 更激进,改 21 更保守。
  • oversold:默认 30。改 20 信号更稀少但更靠谱;改 40 信号多但假信号多。
  • overbought:默认 70。同理。

典型陷阱:单纯 RSI 超卖买入是抄底策略,遇到 2008、2020 这种暴跌会接连吃止损。建议配合"趋势过滤":只有当 MA50 仍然向上时才接 RSI 超卖信号。

③ Bollinger Breakout — 布林带突破

逻辑:价格突破上轨(mid + 2σ)→ 买入;跌破下轨(mid - 2σ)→ 卖出。

背后假设:突破 ±2σ 是"非随机的强势事件",趋势启动概率大。

能赚钱的市场:低波动期之后的爆发性突破(盘整后的暴涨)。不能赚钱的市场:宽幅震荡市(频繁假突破)。

参数选择

  • boll_period:默认 20。改 10 反应快,假突破多;改 50 反应慢,错过早期。
  • std_mult:默认 2.0(包含约 95% 数据的统计意义)。改 1.5 更激进,2.5 更保守。

典型陷阱:单纯 BOLL 突破极易在震荡市连吃止损。建议配合"成交量过滤"——突破当日成交量必须 ≥ 60 日均量 × 1.5 才确认。

14.2 风险管理(高级配置)

所有模板和自定义策略都会自动应用以下 4 道风控(在折叠的 "⚙ 高级配置" 区块设置):

字段含义推荐值
止损 % stop_loss_pct低于入场价 N% 时强制平仓3-5%(短线);8-10%(中线)
止盈 % take_profit_pct高于入场价 N% 时强制平仓不必配,趋势策略让 trailing stop 跑利润;震荡策略可配 3-5%
移动止损 % trailing_stop_pct从持仓期间最高价回撤 N% 时平仓5-8%(让利润奔跑的核心机制)
最大持仓根数 max_holding_bars持仓超过 N 根 K 线强制平仓(避免被动套牢)日线 30-60;分钟级看策略时间尺度

实战建议:止损必配(哪怕 -10% 也比无止损好),移动止损强烈推荐(最大化盈利策略),止盈选配(容易"过早平仓错过大行情"),max_holding 防御性配置。

14.3 仓位模式(4 种)

模式逻辑适用场景
全仓买入 all_in每次买入用掉全部可用现金仅回测验证用,实盘绝对不要(一笔大亏直接报销)
固定金额 fixed_dollar每单固定 N 美元(默认 10000)新手最佳。简单、可控、便于跨股票比较
固定比例 fixed_pct每单占当前净值 N%(默认 100%)赚钱后越买越多(复利),亏钱后越买越少(防爆仓)
固定风险 fixed_risk每单亏损不超过净值 N%(默认 1%)。配合止损反推 qty专业级风控。需配止损 ≥ 1%。100 次连错只亏 ~63% 净值(数学上抗得住)

选择建议:第一次回测用 fixed_dollar 1万(看清楚交易笔数 + 单笔盈亏)→ 验证策略后切 fixed_risk 1%(实盘前必做)。all_in 只用来"测试上限收益",不可作为运行模式。

14.4 13 张统计卡含义详解

指标定义判读阈值
总收益期末净值 / 初始资金 - 1越高越好,但要看 Buy & Hold 对比
Buy & Hold同期单纯持有标的的收益(含手续费)策略要跑赢这个才有意义
Alpha总收益 - Buy & Hold(超额收益)正数才说明策略本身赚钱。负 alpha = 不如躺平
年化按交易日历换算到 1 年跑赢同期 SPY 才算合格
期末净值最后一根 K 收盘时的总资产看绝对值
最大回撤历史峰值到后续谷底的最大跌幅< 15% 可接受 / 15-30% 心理压力大 / > 30% 多数人会割肉
夏普 Sharpe年化收益 / 收益波动率> 1 良好 / > 2 优秀 / < 0.5 平庸
Sortino下行波动率替代总波动率(只惩罚亏损)比 Sharpe 更适合非对称收益策略。> 1.5 健康
Calmar年化收益 / 最大回撤量化最爱的指标。> 1 = 一年赚的>最大跌幅,> 3 顶级
胜率盈利交易 / 总交易趋势策略 40-50% 也能赚钱(靠盈亏比);震荡策略需 > 55%
盈/总盈利笔数 / 总笔数看绝对数量,< 5 笔不够样本
盈亏比 Profit Factor总盈利 / 总亏损> 1.5 健康,> 2 优秀
出场原因S=信号/SL=止损/TP=止盈/TR=移动止损/TO=超时看止损 vs 信号比例。SL/S 高 → 止损过严或策略不准

看回测结果的优先级:① Alpha 是否正(首要) → ② 最大回撤(你心理能否承受) → ③ Calmar 综合性价比 → ④ 盈亏比 + 胜率组合 → ⑤ 总收益。千万不要只看总收益

14.5 自定义代码策略

切换到 "代码" 模式,写一个 on_bar 函数:

def on_bar(bar, ctx):
    closes = [b.close for b in ctx.bars]
    if len(closes) < 50:
        return Action.HOLD

    # 趋势过滤:只在长期上涨时考虑买入
    ma50 = sma(closes, 50)
    if closes[-1] < ma50:
        return Action.HOLD

    # 入场:RSI 超卖
    r = rsi(closes, 14)
    if r < 30 and ctx.position.is_flat:
        return Action.BUY

    # 出场:RSI 超买
    if r > 70 and not ctx.position.is_flat:
        return Action.CLOSE

    return Action.HOLD

可用对象

  • bar.open / high / low / close / volume / time:当前 K 线
  • ctx.bars:从开始到现在所有 K 线(list of Bar)
  • ctx.position.qty / avg_price / is_flat:当前持仓
  • ctx.cash / equity:现金 + 总净值
  • ctx.params:策略参数 dict(如果有)

可用函数(无需 import):sma(values, period)ema(values, period)rsi(values, period)bollinger(values, period, std_mult)macd(values, fast, slow, signal)atr(highs, lows, closes, period)donchian(highs, lows, period)math 模块。

沙箱限制import / open / eval / exec / globals / __* 等危险操作全部禁止。沙箱用 AST 在编译期检查,违规 → 加载失败有具体报错。

14.6 Walk-Forward 样本外测试

勾选 "样本外测试" 复选框,设置训练集比例(默认 70%)。回测自动把数据拆两段:

  • 训练集(前 70%):用来"假装"调参的样本
  • 测试集(后 30%):模拟"未来未见数据",独立跑一遍

怎么读结果

  • 训练 +20% / 测试 +18% → ✅ 健康,策略对参数不敏感
  • 训练 +30% / 测试 -5% → ⚠️ 过度拟合警告(系统自动标红)。参数是"喂出来"的,未来不可信
  • 训练 -5% / 测试 +10% → 巧合,再换样本试试,可能就是噪声

真量化的金科玉律:永远不在你想"上实盘"的那段数据上调参。先 walk-forward 至少跑 3 个不同时段都正收益,再考虑实盘。

14.7 网格搜索(参数寻优)

"网格搜索" 模式 → 模板下选一个 → 每个参数填一组值(逗号分隔,如 3,5,8,13) → 运行。

系统自动跑笛卡尔积(如 4×4=16 组合),按你选的指标(Sharpe / 总收益 / Calmar / Sortino)排序,显示 top-10。点结果行的 "应用此组参数" 自动填回模板回测一次细看。

  • 组合上限 200:超过自动拒绝(防 CPU 烧坏)
  • 排序指标推荐 Calmar 而非 Sharpe(量化更看重"回撤调整后收益")

陷阱:网格搜索本质是"在历史上挑最好的参数",几乎肯定会过拟合。每次找到 top-10 后必须 walk-forward 验证——top-1 在测试集还能正收益的,才算真的有效。

14.8 图表与交易明细

主图(K 线):绿色 BUY / 红色 SELL 标签是策略实际触发点。下方净值曲线:含两条线 —— 你的策略(实线)+ Buy & Hold 基准(灰色虚线)。两线交叉处是 alpha 由正转负的瞬间。

底部交易明细表:每笔的入场/出场时间、价格、数量、绝对盈亏 + 收益率%。

避免过度拟合的 4 个铁律:①参数在 3-5 只不同股票上跑都正才信;②walk-forward 测试集也要正;③不要每次只调"一个最优参数",要看 top-10 整体表现是否稳定;④参数越少越好(2 个参数比 5 个参数靠谱十倍)。

15. 手动交易

📌 开发中(Phase 2)。功能完成后这里会补全:moomoo 账号下单 UI(限价/市价/止损)、订单簿、成交记录、风控(每单上限、日内亏损上限、Kill Switch)。

当前安全地基已就绪(trade_safety.py + trade_provider.py),所有真实下单都会经过 check_order_allowed() 安全门,并强制写入 order_audit 审计表。

16. 策略自动执行

📌 开发中(Phase 3)。功能完成后这里会补全:从 §14 保存的策略一键启用为实盘自动执行(含心跳、订阅 K 线推送、按规则下单、止损、Kill Switch 联动)。

启用前会强制提示:真金白银,需输入 moomoo 交易密码 + 二次确认

17. OpenD 连接管理

moomoo OpenD 是本地网关程序,运行在你电脑上,负责:

  1. 连接 moomoo 服务器(行情 / 交易)
  2. 暴露本地 TCP 接口(默认 127.0.0.1:11111)给 Python SDK

QuantScreen 不直接连 moomoo 云端,而是通过 OpenD。所以"美港股实时行情、交易"等功能要先把 OpenD 跑起来 + 登录。

登录流程(管理员页面 /admin/opend

  1. 输入 moomoo 账号(邮箱 / 手机带国家代码 / 用户 ID)+ 密码
  2. "启动 OpenD 并登录",后端写入临时配置文件并启动 OpenD 进程
  3. 如需图形验证码 → 后端读取 OpenD 生成的 PNG 显示在网页 → 你输入 → 提交
  4. 如需短信验证码 → moomoo 向绑定手机发短信 → 你输入 → 提交
  5. 状态变绿 "✓ 已登录",美港股 API 可用

关于密码安全

  • 密码到达后端后立刻调 moomoo.unlock_trade()50 毫秒内从 Python 内存丢弃
  • 不写日志、不存 DB、不在 API 响应里返回
  • 会话 TTL 2 小时,闲置自动重锁;浏览器关闭也会重锁
  • FutuOpenD.xml 配置文件登录成功后会被立即清空 <login_pwd> 字段

常见错误

提示原因解决
账号或密码错误moomoo 服务端拒绝核对账号 + 密码(去 moomoo App 试一下)
需要图形验证码moomoo 风控触发看图填,区分大小写
需要短信验证码新设备 / 长时间未登录看手机短信填 6 位数字
OpenD 未运行进程被杀 / 配置错误重新点"启动 OpenD"
JP 股票"Unknown stock"moomoo OpenAPI 不支持日股现货系统已自动 fallback 到 yfinance(可正常使用,但延迟 ~15 分钟)

18. 量化思路(推荐版)

这一章不是"中立陈述",是我的具体建议。你可以反对,但起码有个起点。

18.1 趋势跟随 vs 均值回归 — 不要押单一学派

两种策略在不同市况下分别赚钱:

  • 趋势跟随:MA 金叉、52 周新高、突破 20 日箱体。牛市大赚,熊市无股可选,持仓周期几天到几周。
  • 均值回归:RSI 超卖回弹、布林下轨买入。震荡市赚钱,趋势市持续踩坑,持仓几小时到几天。

建议分桶

  • 资金 70% 给趋势跟随(用 §2 的动量质量复合 / 风险调整动量做候选池)
  • 30% 给均值回归(用 §14 的 RSI 超卖 / BOLL 突破回测验证后跑)
  • 市场宽度开关:当 SPY 跌破 200 日均线时,趋势桶自动减仓 50%(避免熊市强行做多)

18.2 过夜持仓 vs 日内平仓 — 选过夜

除非你做的是真正的日内高频(需要 Tick 数据 + 低延迟基础设施),否则建议过夜持仓。理由:

  • 频繁进出 = 手续费 + 滑点叠加,每笔 0.05% × 100 笔 = 5% 直接吃掉收益
  • 美股短期持有(< 1 年)按 ordinary income 计税,长期 (> 1 年) 走 long-term capital gains,税率差别巨大
  • 大多数因子策略和技术指标的有效时间尺度本身就是几天到几周(你按分钟交易反而是噪音)
  • QuantScreen 回测默认包含 5 bps/侧手续费,更换粒度时记得调整(高频换手的策略要把手续费拉到 10-15 bps 才接近真实)

18.3 横截面因子 vs 时间序列触发 — 缺哪一块

QuantScreen 现有 7 个价格因子 + 6 个基本面因子,覆盖了 5 个维度(动量、反转、低波、新高、放量、风险调整、价值、质量),都属于横截面打分——告诉你"长期值得关注哪些股",但不告诉你"此刻何时入场"

缺的是时间序列触发型扫描,下面列举三个值得加的(已规划,等手动交易和自动策略落地后实现):

  • 突破扫描:收盘价 = 最近 20 日最高 + 当日成交量 ≥ 60 日均量 × 1.5 + MACD DIF 上穿 DEA
  • 回调买入扫描:收盘 > MA20(仍在趋势中)+ RSI(14) < 40(短期超卖)
  • 板块轮动:算 11 个 SPDR 板块的 20 日收益率,取领涨前 3 个,板块内按风险调整动量取前 10

实操建议:先用 §2 的因子筛选拉出"长期关注名单"(约 20-30 只),再用 §13 走势图检查每只的具体形态,确认买点(MA 金叉 / 突破 / 回调),最后用 §14 回测同一组参数在这些股票上的表现,全部正收益的策略再上实盘。

-
-