📖 功能使用说明
股票量化分析系统 · 全部功能与使用方法总览
🎯 评分引擎体系(V0-V6 + CapFlow)
系统内置 6+1 个独立评分引擎,各引擎视角互补、互不依赖,统一通过 get_scorer('slug') 调用。
| 引擎 | Slug | 定位 | 核心逻辑 | 典型用途 |
|---|---|---|---|---|
| V0 | v0 | 空评分 | 恒返回 0 分,仅配合买入过滤器链 | 纯 filter 策略回测 |
| V1/V1P | v1 / v1p | 经典评分 | 原版趋势+量价综合评分 | 历史基准对比 |
| V2 | v2 | 新评分 | 新一代综合评分(含资金流) | 对比验证 |
| V3 | v3 | 回调拉升引擎 | 低点→拉升→回调到位(站上 MA5)→再拉升,100 分制 | 左侧买点捕捉(详见下节) |
| V4 | v4 | 底部聪明 | 位置/趋势/量价/风险 四维 25 分制 + 加减分,找"跌透"的股票 | 左侧抄底选股 |
| V5 | v5 | 主升追涨 | 量比>1.5+方向>0.7+连涨,找"正在涨"的股票 | 右侧追涨确认 |
| V6 | v6 | 涨停蓄势 | 涨停准备度评分(phase 四阶段:底部建仓/蓄势洗盘/主升加速/高位出货) | 涨停捕获 |
| CapFlow | capflow | 资金活力 | 资金流辅助评分 | 资金面确认 |
📈 V3 回调拉升引擎(重点功能)
形态识别框架(三阶段状态机)
完整形态:低点确认 → 拉升(4-12% 最优)→ 回调(先破 MA5 再站回)→ READY 买入点 → 突破前高
快速反转:低点后 1-3 天内直接站回 MA5(无完整回调段),放量站回=资金抢筹
跌后站回:40 日内存在低点 + 当前收盘站上 MA5 + 低点后曾破 MA5,作为兜底识别
100 分制评分构成
| 维度 | 分值 | 规则 |
|---|---|---|
| 拉升质量 | 0-25 | 4-12% → 25;2-4% / 12-18% → 18;1-2% → 12;18-25% → 10;>25% → 18/12 |
| 回调质量 | 0-25 | 2-5 日 → 25;6-8 日 → 20;0-1 日 → 15;9-12 日 → 12;深度 >20% 归零 |
| 结构质量 | 0-25 | 低点抬高 +10、多头排列 +8、浅回调 +7 |
| 量能质量 | 0-25 | 回调段缩量(<1.1 倍拉升段)→ 15;到位日量能 0.5-2.0 → 10;快速反转 vr5≥0.5 → 20 |
| 加分项 | ≤26 | 拉升不破 MA5 +8、回调 2-5 日 +5、低点抬高 +5、洗盘型 +5、量价收敛 +5、有效站上 MA5 +5、低位区 +6、上升通道 +2~3、大盘弱被动回调 +2~6、反弹质量 ≥4 条件 +8 |
| 减分项 | ≤40 | 回调段深跌 -12、连续阴跌 -15、放量 ≥2.5x -8、高位位置 -10~-15、波段涨幅 >50% -15、上影线 -5~-8、高开收阴 -5 |
波段类型标签
- 反弹企稳型(下跌后企稳):跌深后站回,全池后验 +1.98% 最佳
- 回调到位型:上升中回调到位,后验 +0.04% 平庸需谨慎
- 突破确认型(超前高):站回且超前高,后验 +2.24%
底线反转型(v3.0.4,老板 2026-09-22)
回调创新低(最后一跌)后波谷成立、逐步拉升的类型。打标需同时满足:
① 形态低点创 20 日新低;② 低点前 60 日高点 → 低点收盘回撤 ≥20%。
标签:detail.sub_type = '底线反转(回调创新低)'(纯新增字段,不影响分数)。
后验(137 池 2023-06-06~2026-06-05,真跑 WaveDetector,n=18374): 10 日达标 +5% 51.6% vs 无标签 44.5%(+7.1pp),H1/H2 两段均稳(52.0/51.1 vs 46.8/42.2); MFE10 5.22% vs 4.28%、MFE20 7.87% vs 6.44%。提高的是波段达标率,不是 20 日选股 alpha(分位 46.9 vs 50.1)。
⚠️ 修正记录:v3.0.3 只查了「20 日新低」→ 让 70.1% 的 V3 信号都命中且反向(46.0% vs 无标签 49.6%); v3.0.4 补上「回撤≥20%」(不可省)后才与后验口径一致。
加分项 newlow_bonus(+3)默认关闭——默认路径与旧版逐点一致(已验 137 池 22285 锚点 0 差异),
需显式启用:ScorerV3({'newlow_bonus': True}) 或 wd.score_wave(i, newlow_bonus=True)。
日扫入口:python3 scripts/scan_newlow_reversal.py [--top 20] [--dry] → 观察池「底线反转」分类。
信号分档
≥80 强信号 / 60-79 中信号 / <60 弱信号(弱信号不参与买入)
137 池 V3 全量扫描(日常用法)
对基准池(base_pool,137 只)逐股跑 V3 引擎,输出每只股票的评分、形态阶段、波段类型,形成当日可操作候选清单。
# 方式1:完整扫描脚本(输出到终端 + JSON)
python3 scripts/_tmp_scan_pool_137.py
# 方式2:分析单只股票(详细报告)
python3 scripts/analyze_stock.py 300124 --date 2026-08-07
# 方式3:调用引擎接口(Python)
from pipeline_engine.engines import get_scorer
scorer = get_scorer('v3')
result = scorer.score(closes, highs, lows, volumes, idx, dates=dates, code=code)
print(result.score, result.score_detail)
评分语义:READY(回调到位可买)→ 84 只;PUMP(拉升中)→ 15 只;FAIL(形态破坏)→ 38 只。≥80 分优先关注(2026-08-07 实测 68 只 ≥80,满分 16 只)。
🛡️ V4 底部聪明引擎(独立使用)
定位:找“跌透”的股票(左侧抄底)。位置/趋势/量价/风险四维基础分各 25,叠加 BUY_RULES 加减分,输出 0-100 分 + 多空判断。评分维度与 V5 互斥互补——V4 高分(深跌底部)通常 V5 低分。
| 评分档位 | 含义 |
|---|---|
| ≥85 🏆 优秀 / ≥70 ✅ 良好 | 跌透+缩量+资金进场,可左侧布局 |
| 55-69 👀 关注 / 40-54 📉 偏弱 | 观察等待 |
| <40 ❌ 回避 | 位置高/趋势差,不参与 |
关键输出:verdict(合理买入/底部朦胧/追高信号)、趋势(短多长空/空头排列)、位置(深跌底部/底部)、支撑压力位列表、20 日最大回撤、OBV 分位、V6 蓄势状态。V4=100 只说明“跌透了”,需叠加 V3 READY(回调到位)或 V6 确认才构成买点。
# 137 池 V4 全量分析报告
python3 scripts/bench/v4_pool_137_report.py
# 指定池/日期/排序扫描(V3/V4/V5/V6 四引擎)
python3 scripts/scan_v345_pool.py --pool base_pool --date 2026-08-07 --top 50 --sort v4
# 单股 V4 完整分析(含支撑/压力/多空判断/报告)
python3 scripts/analyze_stock.py 300124
python3 scripts/analyze_stock.py 300124 --llm # 启用 LLM 深度解读
python3 scripts/analyze_stock.py 300124 --json # JSON 输出
实战用法:V4≥70 主筛 + V3≥60 确认 + V6≥60/V5≥40 加分;下跌期 V4 高分照样跌(回测 20 日均 -4.59%),必须配大盘环境(L1-L5)+ 分散 + 止损。
🔥 V5 主升追涨引擎(独立使用)
定位:找“正在涨”的股票(右侧追涨)。六维评分:趋势结构 30 + 量价确认 25 + 资金流向 20 + 主力洗盘 15 + 位置安全 10 + 风险扣分(一票否决)。
| 判定阈值 | 含义 |
|---|---|
| ≥85 主升启动 / ≥70 拉升趋势 | 多头排列+放量+资金双流入,右侧入场 |
| ≥55 趋势加强 / ≥40 温和上涨 | 跟踪观察 |
| 25-39 横盘观望 / <25 下跌回避 | 不参与(下跌回避=负期望) |
核心信号:量比>1.5 + 方向比>0.7 + 连涨≥3 天;VFI/WVAD 双流入;风险一票否决(OBV 顶部背离 / WVAD 巨量流出 / 放量下跌)。V5 是稀缺维度(全市场 ≥60 仅 6%、≥80 仅 0.04%),作硬门槛会选不出股,建议作加分项或主升确认。
from pipeline_engine.engines import get_scorer
v5 = get_scorer('v5')
result = v5.score(cl, hi, lo, vo, idx)
print(result.score, result.score_detail)
实战用法:V5≥55 确认主升(V4 高分股 V5 必低——左侧已涨完);与 V6 组合(V5≥55 + V6 60-89)历史次日涨停率 3.17%(2.2x 基准);连板打板场景只打 V5 强势股。
⚡ V6 涨停蓄势引擎(独立使用)
定位:涨停准备度评分(不预测涨停,衡量“蓄势是否到位”)。四阶段生命周期检测 + 阶段特定评分,输出 limit_up_score 0-100 + phase + motive + verdict。
| Phase | 名称 | 评分侧重 | 操作含义 |
|---|---|---|---|
| 1 | 底部建仓期 | 放量/OBV蓄能/形态(收集筹码) | 主力吸筹,回踩可跟 |
| 2 | 蓄势洗盘期 | 筹码锁/均线/形态(准备拉升) | 洗盘结束,主升概率大 |
| 3 | 主升加速期 | 均线加速/量能阶梯/动量 | 持有为主 |
| 4 | 高位出货期 | 量能安全/位置安全 | 只卖不买 |
已验证规律:V6 60-89 档次日涨停率 2.14-4.06%(1.5-2.9x 基准);V6≥90 是陷阱区(0% 涨停、次日均 -1.14%)——大涨次日/跌停日也会得满分;连续 2 日底部放量(阶段确认)是最强信号(10 日超额 +1.71pp/胜率 61%)。
# 全池 V6 扫描(随 update_daily 每日预缓存 v6_scores)
python3 scripts/scan_v345_pool.py --pool base_pool --sort v6 --top 30
# 单股 V6 详细(phase/motive/四组件)
python3 scripts/analyze_stock.py 300124 --json | jq '.limit_up'
# 涨停后连板规律分析(脚本化)
python3 scripts/bench/v6_logic_features.py
python3 scripts/bench/v6_combo_check.py
实战用法:V6 作确认层(不独立买入)——与 V4(跌透)组合(V4≥60+V6≥40)、与 V5(主升)组合(V5≥55+V6 60-89);顶格分 ≥90 反而回避。
🌍 L1-L5 宏观到微观五维分析
自上而下五层分析体系,每日收盘后自动生成(cron 16:50 北京),也可手动触发:
| 层级 | 维度 | 核心指标 | 输出 |
|---|---|---|---|
| L1 | 国际宏观 | 跨境 ETF(纳指/标普/日经/恒科/中概/德国)、黄金、汇率、美债 | 0-100 分(外部环境) |
| L2 | 国内宏观/情绪 | 两融余额、涨跌家数、涨停/跌停、中美利差、LPR/MLF | 0-100 分(内部环境) |
| L3 | 行业轮动 | 行业 RPS、资金流入、板块融合信号(确认启动/潜伏/分歧/回避) | 行业清单+分数 |
| L4 | 市场结构 | 情绪指数(vol/momentum/fund/value/risk 五维)、市场稳定性、宽度、高低切 | 情绪带+仓位上限+动作 |
| L5 | 个股精选 | V3/V4/V5/V6 四引擎+基本面+量价异常 | 个股候选清单 |
综合用法:L1+L2 定仓位方向(<40 轻仓/40-60 中性/>60 积极)、L3 选板块主线、L4 定节奏(偏热减仓/偏冷低吸)、L5 落个股。历史上 L1=62/L2=50 → 综合 56 中性(仓位建议 50-60%);情绪指数 75.1 偏热 → cap_limit 10%(只卖不买)。
# 手动触发 L3 行业轮动 + L4 情绪/稳定性(收盘总结数据源)
python3 scripts/daily_close_collect.py
# 行业 RPS + 板块轮动融合分析
python3 -c "from pipeline_engine.analysis.sector.pipeline_entry import run_daily_review; r = run_daily_review('2026-08-07'); print(r.fusion_report)"
# 情绪指数(五维权重 vol0.15/momentum0.35/fund0.10/value0.20/risk0.20)
python3 -c "from pipeline_engine.analysis.framework.layers.sentiment import SentimentIndex; print(SentimentIndex('2026-08-07').compute())"
# 市场稳定性(阶段判定/分数/策略指引)
python3 -c "from pipeline_engine.market_stability import analyze_market_stability; print(analyze_market_stability('2026-08-07'))"
报告归档:Stock/plan/2026-08-01-L1L2宏观报告.md、2026-08-01-L3L4行业与市场结构报告.md、2026-08-02-L1L4五维分析.md(含原始分/分位/操作含义)。
⚠️ 量价异常检测器(持仓风控)
十种经典量价异常自动识别,用于持仓管理/防回撤(非择时工具)。验证结论:信号未来 1-5 日预测力弱,价值在“应对”而非“预测”——职业交易员与散户在风控层面的核心分水岭。
| 信号 | 识别条件 | 预案 | 优先级 |
|---|---|---|---|
| 放量下跌破位 | 放量跌破 MA20/前低 | 立即清仓(不等 -8%) | 🔴最高 |
| 天量长上影 | 高位量比>2 + 上影>实体2倍 | 尾盘减 50%(冲高回落出货) | 🔴高 |
| 天量长上影(非高位) (v2.65.0) | 低位/中位量比>2 + 上影≥实体2倍 + 上影≥振幅50% | 不追高;已持有收窄止损至 -5%,观察次日能否收复上影一半(或是抛压太大,或主力故意洗盘) | 🟡中 |
| 高位吊颈线 | 高位阴线 + 下影>实体2倍 + 上影极短 | 次日低开即清仓;高开无法站稳今开则减50%(高开低走尾盘拉回诱多) | 🔴高 |
| 放量滞涨 | 量>1.5× + 涨幅<2% 连续2日 | +行业RPS<50 → 提前清仓 | 🟡中高 |
| 连续三日不创新高 | MA20上方 + 3日最高<前5日最高 + 量比<1.2 | 减仓50%,剩余止损收紧至-5%;5日仍不创新高清仓 | 🟡中 |
| 连续缩量阴跌 | 3日连跌 + 每日量<前5均量×0.7 + 累计-3%~-8% | 减仓50%(不等-8%),剩余止损收紧至-5% | 🟡中 |
| 顶背离 | 价创20日新高 + 量<上次新高量×0.9 | 高位减 30%(上涨动能衰竭) | 🔴高 |
| 顶部三鸦 | 高位(pos60≥0.7) + 连续3阴线逐步下跌 + 第三根放量 | 出现即减仓50%,剩余止损收紧至-5%(后验20日胜率仅35%) | 🟡中高 |
| 缩量上涨 | 量<0.8× 连续2日 | 控盘锁仓,持有 | 🟢低 |
| 底背离 | 价创20日新低 + 量<前5均量×0.6 或连续3日缩量 | 不加仓、不止损,给予更多容忍度(抛压枯竭);大盘企稳可小幅加仓(≤30%仓位) | 🟢正面 |
| 地量十字星 | 量<0.5× + 十字星 | 等变盘 | 🟢低 |
| AH股溢价极端 | A+H上市 + 溢价率>历史均值+2σ | 不直接卖出,降低加仓优先级 | 🔵参考 |
| 换手暴增收阴(v2.39.1) | 当日换手≥20日均×3 + 收阴<-1%(当日已报放量下跌破位时不重复) | 高位/中位减仓30-50%,止损收紧至-5%(筹码松动出货);低位先观察不追跌 | 🔴高 |
| 换手堆积滞涨(v2.39.1) | 近5日均换手≥20日均×1.5 + 5日涨幅<2% + 非低位 | 高位派发区特征:止盈或减仓50%,跌破5日线清仓 | 🟡中高 |
| 天量换手(v2.39.1) | 当日换手≥20%(绝对极端,妖股/末日轮) | 高位坚决减仓;低/中位过热投机提示,追高极危险 | 🔴高 |
信号叠加处理:同时触发多个信号按优先级最高的执行(放量下跌破位 > 天量长上影 > 天量长上影(非高位) > 高位吊颈线 > 顶背离 > 放量滞涨 > 不创新高/缩量阴跌 > 缩量上涨/地量;底背离为正面信号不参与卖出),避免重复操作。高位吊颈线是天量长上影的互补信号(一个抓上影一个抓下影);连续缩量阴跌是放量下跌破位的互补信号(一个防流动性枯竭一个防恐慌抛售)。
背离双向说明(老板 2026-08-09 完善):顶背离=价创新高量不配合→上涨动能衰竭→减仓;底背离=价创新低量萎缩→下跌动能衰竭→抛压枯竭,是持仓中的“好消息”信号。实战用法:①持仓浮亏+底背离→不提前止损,等-8%硬止损触发再走;②底背离+大盘企稳→双底确认,可小幅加仓(≤单票仓位30%);③候选池+底背离→提高买入优先级(抛压枯竭+价格低位双重信号,符合左侧买入逻辑)。
信号评估说明(老板 2026-08-09 补充 11 信号):盘口类 5 信号(心电图分时/秒挂秒撤/对倒放量/钓鱼走势/尾盘偷拉)需分时与 Level-2 盘口数据,当前日线体系无法回测验证,待接入实时行情源后落地;量化环境类 2 信号(量化席位龙虎榜/融券余额占比)需东财龙虎榜与个股融券数据(当前被墙/仅有总量),待数据源恢复;K线形态类 3 信号经 137 池全历史后验:顶部三鸦(高位放量)20日胜率仅 35% 有辨识度已落地;岛型反转(n=938 +2.35%/51% 胜率)与钻石形态(n=2180 +0.65%/48%)因 A 股缺口回补概率高、无卖出辨识度,不落地避免误报。
非高位天量长上影后验(老板 2026-09-19 增):137 池冻结数据 2022-11~2026-06(109,209 有效日)——非高位组 n=234:绝对 T20 均值 +3.58% 看着好看,但那是 2024/2025 上涨年的 beta;控 beta(同日池内横截面)后超额20 中位 -2.83pp、跑赢概率 36.3%、池内分位中位 45.9(基准 50.0);2023 下跌年信号组 T20 -3.67% vs 全样本 -2.07% 更弱;sz002693 同型子集(低位+收阳)n=133:超额 -1.52pp、跑赢概率 31.6%。结论:轻微偏弱 → 定位中等强度提示,不是暴跌前兆,不进卖出指令级。复现:python3 scripts/bench/study_lowpos_upper_shadow.py(结果 db/lowpos_upper_shadow_study.json)。
主力行为五阶段完整图景(v2.70.0,老板 2026-09-20):pipeline_engine/analysis/analyzers/main_force_stage.py 把主力行为拆成 吸筹 / 试盘 / 洗盘 / 拉升 / 出货 五个阶段各自独立判定(日线、多日口径、无未来函数),主阶段按风险优先(出货>洗盘>试盘>拉升>吸筹),并输出近 60 日阶段序列图景与「洗盘→拉升」组合。每个类型都带137 池后验参考(同日横截面控 beta、T20):
· 吸筹 n=4787 · 池内分位 49.6 → 无独立 alpha(观察项)
· 试盘 n=36 · 分位 57.7 → 提示(样本少)
· 洗盘 n=550 · 分位 58.8(两端 59.1/58.4)→ 正向且稳定
· 拉升 n=978 · 分位 44.5 → 负向:追高无 alpha(不要因为看到拉升就买)
· 出货 n=475 · 分位 44.5 → 负向:减仓警示
· 洗盘→拉升 n=103 · 分位 55.5 vs 裸拉升 43.1 → 先洗后拉强 12.4pp
出口:个股页「📈 主力行为图景(五阶段)」卡片(GET /api/stock/<code>/stage);复现 python3 scripts/bench/study_main_force_stage.py。
阶段细化(v2.77.0~v2.79.0,老板 2026-09-20 13:08/13:25/13:29):
老板序列「边拉边出 → 暴力拉升(主拉升) → 见顶 → 滞涨 → 暴力出货」→ 拆为子阶段:
拉升 启动型(距60低<40%)/ 末端(≥40%)/ 主拉升(近20日≥40%);
出货 边拉边出(高位滞涨未破位)/ 暴力(多日暴跌破位,状态延续3日)。
后验(全部交易日 137池):启动型 48.9 vs 末端 39.4;边拉边出 32.1(✅减仓信号);
主拉升 MDD20 中位 -9.1%(滞涨后主拉升 -9.7%,14.5% 概率跌≥20%)→ 风险暴露期;
暴力出货之后 MDD 仅 -4.3%(风险已释放)→ 仅作描述,非信号。
阶段细化(v2.77.0,老板 2026-09-20 13:08):拉升拆 启动型(距60低<40%)/
末端(≥40%),出货拆 边拉边出(高位放量滞涨未破位)/暴力(当日≤-4% 或 放量破MA20 或 已从高回落≥15%)。
后验(全部交易日,137池):拉升·启动型 分位 48.9 vs 末端 39.4(差 9.5pp);出货以“边拉边出”为主(42/53)分位 32.1。
⚠️ 暴力出货(多日)后验:各变体 T20 中位 +1.75%~+3.96%(分位 49.6~56.2)→ 偏反弹,非交易信号;
真正的减仓信号是“边拉边出”(高位滞涨未破位,分位 32.1)。
⚠️ 教训:峰谷(局部极值点)不适合验证反转类信号(暴跌日往往是局部最低 → 后续反弹),仅作结构骨架。
主力行为阶段标注页面(v2.72.0,老板 2026-09-20):/stage?code=sh603618
(导航「观察 → 📈 阶段标注」)。逐日跑生产口径,把个股历史标出 吸筹/试盘/洗盘/拉升/出货:
K线加彩色阶段带 + 每段 T20 标签,下方阶段明细表(起止/位置/振幅/量比/资金/后续T20/回撤)+ 五阶段后验参考表。
· 接口:GET /api/stock/<code>/stage-timeline(bars_data + runs + marks,只读,0.2s)
· 引擎:main_force_stage.analyze_stage_timeline()(时间轴唯一口径)
· 锚点:杭电股份 sh603618 = **13 段**(v2.73.0 出货加位置条件后从 20 → 13;测试 tests/test_stage_anchor_sh603618.py 锁定)。
段(峰谷过渡)+ 事件(主力波段)—— v2.94.0/v2.95.0,老板 2026-09-20 22:33「A+B,12要」
· L1 段 = 相邻峰谷之间(谷→峰=涋腿 / 峰→谷=跌腿);含 5 维特征
(位置/量能/均线/形态)+ 段型:段内若有日级五阶段标签 → 取段内主导者(口径一致);
无 → 用段自身特征推定(拉升腿/吸筹腿/试盘腿/洗盘腿/出货腿/温和上涨腿/回调腿)。
· L2 事件(波段) = 细段按波动自适应阈值(3×近120日均振幅,夹 8~30%)
合并的粗粒度波段;事件的 phases = 内部段型汇总(规范序 吸筹→试盘→洗盘→拉升→出货)
→ 给出已走阶段 + 当前阶段 + 进度 N/5 = “大吸筹阶段”这类更明确的阶段。
· 页面:/stage?code=sh603618 新增「🌊 波段(事件)」+「📐 段(峰谷过渡)」两表;
图上浅蓝色带=波段区间(标签=序号+进度),峰谷散点仍为红▲/绿▼;接口
GET /api/stock/<code>/leg-event(只读,约 1.7s)。
· 后验(137 池 17177 段,只做同方向段横截面比较):上涨腿之后的回撤深度 ——
吸筹腿 -5.06%(最浅)/ 试盘腿 -5.19 / 温和上涨腿 -5.81 / 拉升腿 -7.83%(最深,
→ 拉升腿该减仓);下跌腿之后的反弹:回调 +5.51 / 洗盘 +5.71 / 出货 +6.38
(出货腿后反弹最强=均值回归,不能当派发信号)。
· ⚠️ 口径教训:腿按峰谷必然上下交替 → 「吸筹→试盘」不可能是相邻腿(实测 0 次),
故吸筹/试盘由“段内标签或段形态”承载;段末 T20 / 下一段收益会被买峰/买谷机械效应污染,
只能同方向段横截面比较。
· 筹码维度(v2.96.0,老板 2026-09-20 23:06「加筹码维度」):每条段在段末算
chip_trace 口径(唯一源,尾部 260 根,与全历史一致但快)→ 信号
(absorbing 吸筹完成 / locked 锁仓 / distributing 派发 / neutral 中性 / deep_loss 深套 /
low_accumulated 低位沉淀 / markup 拉升 / high_profit 高位获利)+ 集中度 + 低位沉淀比,
直接显示在段表“筹码”列(绿=有利,红=不利);接口耗时 1.7s → 4.1s。
· 均线 + 大盘关联度(v2.97.0/v2.98.0,老板 2026-09-20 23:25「补齐」+ 23:30「板块改为上海指数关联度」):
段表再加两列 —— 均线(多头/空头 + MA20 偏离%;后验:多头排列→之后回撤更深 1.3pp)
与 大盘(与上证指数的 60 日收益相关系数 corr + β;复用 main_force_stage._load_index_series 唯一口径)。
· 后验(137 池 17177 段,同方向段横截面):上涨腿之后的回撤随关联度单调变浅
(关联 0-0.4 → -6.21% / 0.4-0.7 → -5.61 / ≥0.7 → -5.03%;上涨腿×段型也一致:
吸筹腿 -5.21/-5.14/**-4.35**、温和 -6.20/-5.81/**-4.96**、试盘 -5.93/-5.08/**-4.24**)
→ 跟大盘越同步,段后回撤越浅(更稳);低关联/独立行情波动更大(1.2pp,单调但幅度温和)。
· 原“行业涨停热度”已废弃(数据稀疏,覆盖不全,各桶几乎同值)——已删掉 sector 字段。
至此段的维度 = 位置 ✅ / 量能 ✅ / 均线 ✅ / 形态(长上影)✅ / 筹码 ✅ / 大盘关联 ✅。
筹码维度接入 + 位置/振幅条件(v2.71.0,老板 2026-09-20):
· 筹码(chip_trace 唯一源,阶段命中时惰性计算):输出窗口信号
(absorbing/locked/distributing/neutral/deep_loss)、集中度、低位沉淀;后验(5852 候选):
吸筹 + 筹码 absorbing(峰下移)→ 相对命中 56.1%(+7.3pp),而 locked/neutral 无益;
洗盘遇 distributing/neutral 则 -8.4/-19.8pp → 直接剔除该标签。
· 位置上限:试盘/洗盘 要求距60日低 ≤60%(失败案例 70~88% 高位:荣盛石化 -24.9%、金力永磁 -15.6%)。
· 振幅条件:试盘 ≤40%(失败案例 49~59%)、拉升 ≤50%(末端加速 83~93% 不算)、
出货 ≥30% 才算真派发(<30% 仍识别但标 dist_real=False + 图景注“大概率换手”)。
· 出货位置(v2.73.0):出货还需 距60日低 ≥40%(锚点杭电验证:分位 44.5→32.1;
20~40% 那档是噪声)。
复现筹码后验:python3 scripts/bench/study_chip_confirm.py。
主力行为识别:试盘 / 洗盘(老板 2026-09-19 增,多日组合 + 五维):单日形态不可靠,本模块以 15 日窗口做多日组合判断,五维取证——①价量影子(放量长上影/长下影)②K线形态(复用形态链:缩量回踩/放量拉升)③量能结构(拉升腿→缩量回调腿)④筹码(复用 chip_trace:吸筹/锁仓/派发)⑤位置结构(60日高低位置 + 回调腿不深破MA20 + MA60方向)。
试盘 = 放量长上影 + 之后量能逐日递减的回落(老板 2026-09-19 口径:回落缩量用多日递减缩量)且未破影线日最低 + 非高位 + 筹码非派发 + MA60向上 → 触发「特别关注」(后验:递减 3 日 + 守住 + MA60向上 → 池内分位 58.8;再加资金净流入 → 62.0;而单日/均量口径仅 46.7,递减 2 日 51.1 / 4 日 50.4)。
洗盘(v2.67.0 重定义)= 大盘多头环境 + 个股上升趋势(MA20>MA60 且 MA60上行)+ 非低位 + 20 日振幅≤20% + 缩量(近10日/20日均量≤0.9)+ 近5日不破MA20 + 20 日内长下影≥2 → 触发「特别关注」。
后验(137池冻结、50,295 样本、同日横截面控 beta):试盘通过(回落确认+MA60向上 n=277:T20 中位 +1.06 vs 全样本 -0.59、胜率 54.5%、池内分位 60.4);洗盘重定义后通过(大盘 bull 时 n=232 → 池内分位 57.5,时间切分 H1 59.0 / H2 56.0;大盘 bear 时同口径仅 41.5 → 熊市里“洗盘”就是下跌中继,所以强制要求大盘多头)。另:“影线在末日、尚无回落确认”组池内分位 50.4(无预测力)→ 不单独触发。
出口(v2.67.0):① 观察池行内「👀 试盘/洗盘」徽章(watch_pool.behavior/behavior_date,由 scripts/scan_main_force_behavior.py 每日扫描写入,cron behavior-scan-daily 北京 21:00);② 个股详情页「👀 主力行为(试盘 / 洗盘)」卡片(GET /api/stock/<code>/behavior,懒加载)。
引擎 pipeline_engine/analysis/analyzers/main_force_behavior.py;复现 python3 scripts/bench/study_behavior_labels.py + study_behavior_calibrate.py + study_wash_redefine.py→study_wash_grid.py→study_wash_validate.py→study_wash_regime.py。
# 全池扫描
python3 scripts/scan_volume_anomaly.py
# 指定持仓 + 浮盈(输出与盈利联动预案)
python3 scripts/scan_volume_anomaly.py --codes sh600438 sh600893 sz002326 sz300769 sz300792 --profit 5,-3,12,8,10
# 任意日期
python3 scripts/scan_volume_anomaly.py --date 2026-08-07
也可通过网页:个股详情页(/stock/<code>)自动展示十信号检测结果。
💪 波谷逆势强势选股(原强势股扫描)
信号(回测验证 2026-09-02,老板实盘逻辑):波谷确认窗口内(最近波谷日~+2交易日)的普跌日(上证当日跌),选当日逆势强势股——今涨>0 且跑赢上证 2pp+ 且收阳。强度分层:当日涨幅>5% = 🔥极强(回测 5 日浮盈机会 +10.16% vs 全市场 +6.30%)。非窗口/非普跌日返回空。
过滤同波谷选股:L2 双流入(WVAD>0 且 VFI>0,限定强势池)→ L3 V4≥90(verdict 合理买入/底部朦胧)→ L3.5 净额≥500万 → L4 RPS120 top10。实盘验证:2026-08-24 扫描命中电投能源/山煤国际(当日实盘建仓股)。
回测(2023-03~2026-08,117 信号日):20日内出现浮盈≥5% 概率 71.1% vs 全市场 65.7%;≥10% 概率 47.7% vs 41.1%;波谷窗口比非窗口 5-10 日浮盈高 +1.1~1.2pp。详见 plan/2026-09-03-波谷逆势强势股回测验证.md。
python3 scripts/scan_strength.py --date 2026-08-24 --top 10
python3 scripts/scan_strength.py --json
🔀 三层联动选股流水线(板块→龙头→买点)
链路:ETF 板块确认(资金流/热度)→ 板块内强势龙头(重仓股+弹性≥1.2+V5 评分)→ V3 回调买点(READY 信号)+ V4 质量验证。输出三档:🎯首选(主线+V3 READY+V4≥60)/ 次选 / 观察。
# 一阶:主线扫描(70 只行业 ETF,20日涨幅前10%+多头排列+资金占比)
python3 scripts/bench/sector_mainline_scan.py
# 二阶:龙头池(天天基金 F10 重仓股 + 弹性 + V5/V4)
python3 scripts/bench/sector_leaders.py
# 三阶:回踩买点(MA20 偏离<1% + 缩量 + 抗跌)
python3 scripts/bench/sector_pullback.py
# 一键三阶漏斗(板块主线→龙头→买点)
python3 scripts/bench/funnel_pipeline.py --top-mainline 5 --top-leaders 10 --min-market-cap 100
# 板块→成分股→逆势强势+V4/V5 双确认(收盘总结内嵌)
python3 scripts/scan_sector_pipeline.py --sectors 黄金,煤炭,有色 --top 10
🚀 涨停连板规律(打板参考)
基于全市场历史涨停样本(2023 起)验证的规律:
- 连板条件概率:1→2板 17.8%、2→3板 33.0%、3→4板 46.6%、4→5板 48.0%、5→6板 52.1%(2 板是分水岭,越强越强)
- 最优首板:一字板二板率 48.7%、缩量板 27.6%、创新高板 19.7%;断板必走(断板日 19.8% 跌停)
- 次日高开分水岭:高开>5% 二板率 49.3%;低开>2% 只有 3.4%
- V6 结合:涨停当日 V6 60-79 二板率最高 16.9%,V6≥80 反降到 12.5%(顶格陷阱)
- 打板胜率:首板收盘买入持 5 日平均 +1.47% 但中位 -0.74%、胜率 46.8%——少数大赢家游戏,必须严格筛选+断板止损
python3 scripts/bench/v6_logic_features.py # 涨停前兆特征分析
python3 scripts/bench/v6_precision_check.py # V6 分档涨停率回测
python3 scripts/bench/v6_combo_check.py # V4/V5/V6 组合验证
涨停梯队页 + 板块带头作用(v2.44.0/v2.45.0,2026-09-08 研究): /limitup 页面每日展示涨停梯队(连板分层:3板+/2连板/间隔板/首板)+ 行业聚合(涨停潮→板块启动)+ 低位涨停观察(60日位<40%,A3b 验证 T+10 +10.94%/胜率 80% 黄金信号)+ 板块启动预警。
- 带头作用结论:MA3 上行段 + 板块 2 连板龙头 → 板块 T+10 超额 +1.15pp(领先信号);首板无信息、3板情绪顶(T+1 -1.72pp)、间隔板(N字)无关、下行段全部无效
- 黄金信号:上行段 + 60日位<40% + 涨停 → 个股 T+10 +10.94%/胜率 80%;高位涨停 +0.42%、3板以上 -13.24%(绞肉机不碰)
- 每日更新:update_daily.py limitup 子命令(已入 all 九合一);观察池 auto-add 已接入低位涨停源(auto-低位涨停,仅上行段)
python3 scripts/scan_limitup_pool.py --backfill # 全量回填
python3 scripts/update_daily.py limitup # 每日增量
python3 scripts/watch_pool.py auto-add --dry # 自动入池试跑(含低位涨停源)
python3 scripts/watch_pool.py limitup-watch --dry # 「值得关注」入池试跑
⭐ 涨停「值得关注」判定 + 自动入池(老板 2026-09-26):
/limitup 页新增「⭐ 值得关注」卡片,每行涨停带「关注」徒标;
判定唯一实现在 pipeline_engine/analysis/limitup_watch.py(页面与观察池共用,信条14/18)。
- 否决(→ 回避):连板≥2 / 间隔板(N字) / 真跳空或一字 / 60日位≥85 / 换手≥20% / 前10日涨幅≥25%
- 评分(基准 50):低位 pos60<30 +20 / <60 +8;低换手 to<5 +15 / <10 +8 / <15 +3; 板块共振(同行业当日涨停数)≥8 +15 / ≥4 +7;低位启动 pre10<0 +10 / <10 +5
- 判定:≥70 值得关注 / ≥60 一般 / <60 观察 / 否决 回避
- 回测(2023-11~2026-05,22061 个窗口完整事件,脚本 scripts/bench/study_limitup_watch.py): ⭐值得关注(n=6708)次口径(T+20 内收盘曾>C)87.2%、主口径(曾摸到>C)97.1%、 fwd20 中位 +2.29%、正/负天数 11.3/8.6(正负比 1.32)、正>负事件 55.8%; 对照 ⚠️回避(n=12714)79.8% / fwd20 -5.86% / 正负比 0.68 / 正>负 36.8%;全样本 fwd20 -3.29%。 评分单调:50~60 档 fwd20 -6.6% → ≥80 档 +7.7%。
- 自动入池:观察池新增源「涨停关注」(日上限 8,priority 40);入池走专用子命令
watch_pool.py limitup-watch(不与 auto-add 重叠),cron watch-pool-daily 已挂 2.6 步。
⚠️ 数据修正(老板 2026-09-26):limitup_pool.gap_flag 不是「跳空/一字」, 而是间隔板(N字板:近5日涨停≥2次且当日非连板);真跳空/一字需由当日 open 判定 (limitup_watch.gapup_from_klines)。旧研究文案(study_limitup_path.py 的「跳空/一字」标注)已更正。
📊 涨跌家数仪表(v2.46.0,2026-09-08 研究): /breadth 页面展示全市场每日涨跌家数 (标准口径:收盘 vs 昨收)——上涨占比曲线 + 中位涨跌 + 背离信号点。
- 环境指标:普跌日(上涨<20%)95% 发生在 MA3 下行段;breadth 是 MA3 的实时细粒度补充
- 弱动量:普涨≥80% 后 T+10 +1.23%/胜率 68%,但普涨次日易分化(勿开盘追);连续普跌 3+ 日后 T+5 反弹胜率 60%+(冰点不割肉)
- 🔥 背离信号:护盘型背离(上证涨>0.05% 但普跌<40%)= 减仓预警(后 T+3 胜率仅 29%);小盘活跃背离(上证跌但普涨>60%)= 布局信号(T+3 胜率 62%)
- 落地:风险仪表盘已含"家数背离"信号(🔴护盘/🟢活跃);watch_pool auto-add 均衡日(50-65%)自动跳过(四星候选最差环境,胜率 31%)
python3 scripts/breadth_daily.py --backfill # 全量回填(2023-11起, 一次性)
python3 scripts/breadth_daily.py # 每日增量(update_daily all 已含? 需手工挂)
python3 scripts/risk_dashboard.py [date] # 风险仪表盘(含家数背离信号)
⛏️ M1 主力操盘状态机(v2.47.0,2026-09-09 研究): 基于"股价非随机、主力操盘有规律"假设的量价预测引擎,环境自动切换双模式: 上证 MA3 上行段 → 模式A「试盘收复」(主力放量冲高试盘留长上影 → 5日内放量突破10日高 = 起爆点,T+10 +3.52%/胜57.9%);下行/震荡段 → 模式B「低位吸筹尾声」(r60<25 + MFI>50 + WVAD20日斜率>0 + 量价相关<0.25 + 缩量企稳不破5日低 = 反弹前夜,T+10 +1.81%/胜56.5%,分半验证最抗环境)。
- 用法:
python3 scripts/scan_m1.py --date 2026-09-08(全市场,~3s)|--pool watch(观察池预筛)|--codes sz000001 ...(指定) - 协同:M1 做初筛 → V4/V5 评分排序 → 人工复核(与现有引擎互补不重复)
- 研究结论:详细报告见
Stock/plan/2026-09-09-量价预测新指标研究.md(含候选信号全表、分半稳健性、诚实声明)
python3 scripts/scan_m1.py --date 2026-09-08 --pool watch # 观察池扫描
python3 scripts/scan_m1.py --date 2026-09-08 # 全市场扫描(3.1s)
🏢 基本面分析(FundamentalAnalyzer)
独立于技术评分的财务面分析器,随 analyze_stock 输出(fundamentals 字段):市值/PE/PB/ROE/营收等。数据源:腾讯批量行情(市值/PE)+ 东财 F10(ROE,注意取年报 ROEJQ 非单季)+ 天天基金 F10(ETF 重仓股)。
# 基本面补全(stock_list 表 market_cap/pe_ttm/roe_ttm)
python3 scripts/bench/backfill_fundamentals.py
# 绩优股池构建(流通市值 50-200亿 + 股价 5-40 + ROE≥8% 年报 + PE 正)
python3 scripts/build_guozi_pool.py # 国资池(1221 只,含实控人)
# 全 A 股清单/实控人采集
python3 scripts/fetch_all_a_share.py
python3 scripts/fetch_controllers_extended.py
国资池:benchmark/guozi_pool.py(1221 只:央企 402 + 地方国资 819),含实控人字段(国务院国资委 162/山东 30/深圳 26...),可通过 pool_slug=guozi_pool 直接用于扫描/回测。
📐 波段序列分析(周期波段框架)
以 V3 形态为单元构建波段序列,做全局一致性筛选(一波比一波高/低点抬高/突破前峰)。
from pipeline_engine.analysis.cycle.band_sequence import collect_bands, band_consistency
# collect_bands(wd, dates) → 波段列表(low/hi/cb 三点)
# band_consistency(bands) → 相邻波段谷峰比较(valley_up/peak_up)
已验证结论:波段一致性作为独立筛选层区分度有限(下降通道后 20 日反而 +1.58% 优于上升通道 +0.56%),V3 本质是逆势抄底引擎——通道应作环境标签而非加减分;反弹企稳型波段 +1.98% > 突破确认型 +1.15% > 回调到位型 +0.04%。
💰 交易系统 v2.5(保本与卖出纪律)
| 环节 | 规则 |
|---|---|
| 选股 | 双分支结构(右侧追确认 / 左侧潜伏,二选一): 🅰 右侧分支(原链):V4≥80 + WVAD>0(资金流入,优选>5万)+ vr20<1.3(平量未拉升,优选 0.9~1.3 温和放量)+ 价格<45 + 站上MA5(08-11 完整链回测:231 笔命中、3日最高 +3.57%、胜率 96.5%、T+3 收盘转正 +0.09%;WVAD>5万子集 3日最高 +3.87%/胜率 97.6%,vr20 0.9~1.3 子集 +4.10%/胜率 98.8%) 🅱 左侧分支(08-12 新增):价格≤15 + vr20<1.0(缩量)+ MA20∈[-2%,0](刚回调到位)+ risk=回调(08-12 回测:184 笔命中、3日均 +0.60%、胜率 55.4%,5日 +0.89%/52%;双分支合并 706 信号、3日 +0.49%/52%、5日 +0.72%/52%,重叠样本反而最差 → 两分支互补不可混用,重叠时优先右侧) |
| 买入 | V3 READY 回调到位日 + 支撑位挂单(-1%~-2%);新增最优买入价挂单:当日[最低,开盘]区间内 90 日 OHLC 高频价,次日回踩挂单接筹(半年命中率 66.3%,命中后 86% 概率 3 日内盈利,命中后 3 日平均 +3.49%) |
| 止损 | -8% 硬止损(回测最大回撤 -60%→-17.6%,回撤调整收益 9.86 最优) |
| 止盈 | 15% 卖 30% / 20% 卖 50% / 剩余破 MA20 跟随(让利润奔跑) |
| 组合保护 | 组合浮盈>8% 且大盘破 MA20 → 整体清仓(保本线);中位数连续 3 日 ≤0 或上涨占比 <45% → 降仓 |
| 异常优先 | 放量下跌破位 > 天量滞涨 > RPS<50 减半 > 常规规则 |
回测锚点:V4≥100 组合(H 完整系统)盈利概率 65.4%、均收益 +3.33%;-8% 止损回撤调整收益 9.86 全场最优;MA20 下方大盘择时反而更好(20日均 +1.33% vs +0.02%)。
08-11 新增验证:完整条件链(V4≥80 + WVAD>0 + vr20<1.3 + 价格<45 + 站上MA5)回测(137 池 120 交易日,231 笔命中)——最优买入价挂单 + 1.5% 止盈 5 日有效 → 3日最高 +3.57%、胜率 96.5%、T+3 收盘转正;对比 V4≥80 全部命中(1393 笔 T+3 -0.40%),完整链核心价值在"少亏"(T+3 转正)而非多赚。分层发现:WVAD>5万(资金强流入)与 vr20 0.9~1.3(温和放量)为最优子集;卖出网格回测证明止损在资金流入股上有害(先跌破再反弹),短周期策略不设止损、以 T+5 收盘为兜底。
08-12 新增验证:20 笔实盘复盘发现 3 只被链拦下的赢家(通威 +9.19%、龙盛 +7.19%、荣盛 +6.50%)共性 = 低价(11-12元) + 缩量(vr20<1.0) + MA20 附近 + risk=回调 + 周期板块,且 WVAD 多为负(资金流出日反而是吸筹机会)。回测(137池 120日)确认:左分支(价≤15+vr20<1.0+MA20∈[-2%,0]+risk=回调)3日 +0.60%/胜率 55.4%,单分支强于原链(+0.42%/50%);双分支并集 706 信号 3日 +0.49%/52% 不稀释反增强。重叠 27 样本最差(-0.21%)→ 两分支逻辑互补,不可叠加使用。
🎭 情绪指数与市场稳定性
SentimentIndex(五维权重:成交量 0.15/动量 0.35/资金 0.10/估值 0.20/风险 0.20):输出 sentiment 0-100 + band(偏热/中性/偏冷)+ cap_limit(仓位上限)+ action(如“只卖不买,高仓位减仓”)。历史值:75.1 偏热 → cap 10%;78.7 偏热。
MarketStability:phase(熊市/结构性行情/牛市)+ stability_score + 五维度(趋势一致/宽度/轮动/量能/波动)+ strategy_guide。历史:80.6 结构性行情 → cap 50%。两套 cap_limit 并存需区分(情绪 10 vs 稳定性 50)。
# 网页
/sentiment # 情绪页
# 代码
from pipeline_engine.analysis.framework.layers.sentiment import SentimentIndex
from pipeline_engine.market_stability import analyze_market_stability
print(SentimentIndex('2026-08-07').compute())
print(analyze_market_stability('2026-08-07'))
🌗 牛熊六阶段判定器(大盘季节定位)
MarketCycle(方案B 四维锚定):牛熊阶段 = 情绪(温度)× 趋势(方向)× 估值(水位)× 持续性(确认),输出六阶段 + 震荡。情绪 8 档是“温度计”(快变量),六阶段是“季节”(慢变量)——中间档位无法直接映射,需四维联合判定。
| 阶段 | 市场心理 | 情绪 | 趋势 | 仓位上限 | 操作 |
|---|---|---|---|---|---|
| 牛一 怀疑期 | 无人相信上涨,反弹即卖 | 低(≤40) | 上 | 80% | 左侧分批建仓 |
| 牛二 乐观期 | 赚钱效应扩散 | 中(40-75) | 上 | 100% | 主升核心,正常执行 V3-V6 |
| 牛三 狂热期 | 全民炒股,利好满天飞 | 高(>75) | 上 | 50% | 只卖不买,分批止盈 |
| 熊一 失望期 | 预期利润消失,反弹即卖 | 高(>75) | 下 | 20% | 空仓等待,现金为王 |
| 熊二 恐慌期 | 恐慌抛售,割肉潮 | 中(40-75) | 下 | 10% | 低仓防守 + 60日左侧抄底窗口 |
| 熊三 绝望期 | 无人谈论股票,销户离场 | 低(≤40) | 下 | 80% | 逐步加仓至 80% |
| 震荡 过渡态 | 年线缠绕,方向不明 | 任意 | 平 | 60% | 精选个股,等方向确认 |
估值修正:牛三+估值高位 → 触发 bull3_top(牛三卖出极端信号);熊三+估值低位 → 触发 bear3_bottom(熊三买入极端信号)。持续性:连续 2 周同阶段才切换(防跳变)。
当前判定(2026-08-10):牛三(狂热期)——情绪 78.7 偏热 + 趋势向上 + 估值中位(未触发 bull3_top)→ 仓位上限 50%,只卖不买分批止盈。回测佐证(2023-2026 共 185 周):牛二 60日超额 +0.81% 胜率71%(最强多头)/ 牛三 -0.04% 动能衰减 / 震荡 -3.27% 胜率29%(最强空头)/ 熊二 +3.57%(A股恐慌抄底窗口);调参验证:周频调仓下所有调参方案跑输原版,仓位映射保持原值。
# 代码
from pipeline_engine.market_cycle import MarketCycle
print(MarketCycle().compute()) # 返回 stage/cap_limit/action/confidence 等
# 日报自动包含(daily_close_collect L4_cycle 字段)
🌊 上证波段分析(多算法 · 多档位 · 波段列表,v2.27.2)
页面 🌊波段(导航栏):上证 K 线 + 可切换的峰谷算法叠加 + 计算出的波段列表(起止日期/方向/幅度/天数/峰谷指数值),联动显示 MarketRhythm 市场节奏与 MarketCycle 牛熊阶段。
四种维度的自由组合:
| 维度 | 选项 | 说明 |
|---|---|---|
| 算法 | Zigzag / 滚动窗口极值 / 双算法复核 | Zigzag(reversal_pct 翻转,过滤杂音勾勒主趋势);滚动窗口(局部峰谷快响应);双算法复核(±2天容差共识,金色标记) |
| 比例(Zigzag) | 1% / 2% / 3% / 5% / 8% / 10% | 1-2%≈周级波段、3%≈月度、5% 中级别、8-10% 主升浪/大方向 |
| 窗口(滚动) | 3日 / 5日 / 10日 / 20日 | 3日≈周级、5日默认、10日≈双周、20日≈月级 |
| 平滑 | 无 / 中值滤波 / EMA平滑 | EMA 降噪最强(1年 28→19 极值,-32% 假极值) |
| 时间档位 | 1月/2月/3月/6月/1年/2年/3年/全部 | 支持 K 线拖拽缩放(滚轮+底部滑条) |
波段列表:直接列出计算出的波段(范围/幅度/时间/峰谷指数值),随算法/比例/窗口/平滑联动,可按方向筛选(全部/上涨/下跌)。
# 接口
GET /api/market/waves/zigzag?code=sh000001&range=1y&pct=0.05&method=zigzag&window=5&smooth=none
# → {line: [{x,y}...全历史折线], peaks/troughs: 窗口内峰谷, waves: [最近12个波段{start_date,end_date,direction,pct,days,start_close,end_close}],
# consensus: 双算法共识点(±2天容差), metrics: {wave_pos_zz, interval_zz, depth_zz, wave_low, wave_high, ...}}
GET /api/market/waves/kline?range=1y # 上证 OHLC(含 all=1990 起全量 8703 天)
GET /api/market/waves/context # 当日 MarketRhythm + MarketCycle 联动
GET /api/market/waves/forecast # 🔮 下一个波谷预测(日期区间+价格区域+幅度区间)
# V6 节律三指标(2026-08-14 已接入 V6 三维节律 wave 维度 40 分)
from pipeline_engine.market_waves import wave_position, wave_interval, pullback_depth
# 位置 <30% +15 / >80% -5(Zigzag 波段内);间隔 <20天 +5 / >60天 -5;深度 <0.382 +5 / >0.618 -5
# 🔮 波谷预测(2026-08-15):峰后回调中 → 预测下一谷;谷后反弹中 → 输出反弹进度
from pipeline_engine.market_waves import forecast_next_trough, forecast_next_trough_extrema
# forecast_next_trough(dates, closes, highs, lows, peak_idx=None, days_elapsed=None, cur_close=None)
# forecast_next_trough_extrema(dates, closes, highs, lows, window=5, smooth='ema', ...) # 滚动窗口版
# → {stage, peak_date, peak_close, days_elapsed, cur_dd_pct, trough_date_range,
# trough_price_range, drawdown_pct_range, n_samples, confidence}
# 回测命中率(2019~2026 无未来函数):
# zigzag 版:日期 52.6% / 价格 63.2% / 双命中 31.6%
# 滚动窗口版(window=5,ema):日期 36.8% / 价格 89.7% / 双命中 32.4%(信号密度更高,价格命中突出)
🌊 市场节奏引擎 MarketRhythm(v2.26.0)
识别市场"有主线/无主线"的日内节奏,回答"今天该追板块还是只做独立个股"。与牛熊六阶段互补:阶段看大周期季节,节奏看当日状态。
| 状态 | 判定条件 | 选股建议 |
|---|---|---|
| 🔥 有主线 | 主线板块连续≥3天领涨 + 强度≥2.5pp | 追板块龙头 |
| 🔀 轮动市 | 主线≤2天 + 板块发散度≥1.8(每天换主线) | 只做独立个股,不追板块 |
| 📈 普涨日 | 个股上涨广度≥85% | 防追高,持有为主 |
| 📉 普跌日 | 个股上涨广度≤20% | 谨慎,等企稳;只做低位形态埋伏 |
| ⚖️ 平衡市 | 其余 | 常规 V4/V5 选股 |
节奏分(0-100):广度 40% + 主线强度 25% + 主线持续 20% + 有序度(发散反向)15%。
拐点信号:分数从高位(>75)单日降 >25 或 3 日降 >35 = 顶部预警,但只配牛熊过滤(震荡/熊市)才有效,牛市会假信号。
核心洞察:"普涨无主线"是假健康——广度极高但主线强度崩塌(如 2024-09-30 广度 97.7% 但强度 0.06)= 乱涨顶部信号。历史验证:高分(>80)稀缺(773 天仅 37 天),集中在行情启动期。
# 命令行
python3 -c "from pipeline_engine.market_rhythm import MarketRhythm; print(MarketRhythm().compute('2026-08-13'))"
# 代码引用
from pipeline_engine.market_rhythm import MarketRhythm
r = MarketRhythm().compute() # 返回 state/rhythm_score/drop_signal/advice 等
🚦 系统性风险仪表盘 risk_dashboard(v2.26.0)
聚合 8 大信号做红黄绿三色预警 + 多数表决,输出当日系统性风险等级(低/中/中高/高)。
| 信号 | 来源 |
|---|---|
| 涨跌广度 | 全市场个股上涨占比 |
| 情绪指数 | SentimentIndex(五维加权) |
| 市场稳定性 | market_stability(五维) |
| 牛熊六阶段 | MarketCycle 四维锚定 |
| 市场真面目 | 5 大观察指标 |
| 板块引擎 L4 | 板块轮动 risk_off |
| 指数分析 L2 | 指数量化评分 |
| 市场节奏 | MarketRhythm 状态 |
表决规则:红≥3=高风险;红=2=中高风险;红=1=中风险;红=0 且黄≥3=中风险;否则低风险。
实证:2026-08-13 普跌日输出中高风险(广度 19%🔴+指数分析🔴+情绪🟡+节奏普跌日🔴)。择时回测结论:A 股大盘 20 日择时基本不可行(超卖信号预示反弹而非下跌),风险等级定位为状态展示+规则预警,不用于方向预测。
python3 scripts/risk_dashboard.py # 输出 8 信号 + 表决结果 + 仓位建议
⚠️ 风险分析页(六维风险分档 → 仓位许可,v2.49.4;V 型上限 v2.52.0)
页面 /risk(API GET /api/risk?date=&days=)。
每天把全市场量能/情绪/广度/结构/波动/资金六维原始指标归一化为一个 0–100 的风险分,
分 6 档(L0 极低 … L5 极高)并映射一个建议仓位上限,同时给出「今天能不能开新仓」的策略许可。
| 风险档 | 分数区间 | 仓位上限 | 操作 |
|---|---|---|---|
| L0 极低 | < 23.8 | 100% | 全面开放 |
| L1 低 | 23.8–29.1 | 80% | 正常操作 |
| L2 中 | 29.1–35.1 | 60% | 均衡日禁 auto_add |
| L3 中高 | 35.1–41.2 | 40% | 只做底部,减仓为主 |
| L4 高 | 41.2–48.9 | 20% | 只减不加 |
| L5 极高 | ≥ 48.9 | 30% | V 型反弹:可小仓左侧试底;auto_add 仍禁 |
仓位上限为 V 型(v2.52.0):L0–L4 递减 100/80/60/40/20%,L5 反弹至 30%(老板 2026-09-13“L5 上限已到风险最大,接近反转可提高上限”)。依据:回测 L5(n=119 天)未来 T+20 上证均 +1.68%/胜率 62.4%(全档最高),但未来 20 日回撤≥5% 概率也最高(24.8%)——属高风险高弹性杠铃,故上限仍远低于 L0,须控总仓。cap 提高时“可开新仓”许可同步放开(L5 allow_new=True),否则 cap 形同虚设;L4 仍只减不加。详见 plan/2026-09-13-L5仓位上限调整依据.md。
硬闸门:护盘型背离(指数涨但普跌<40%)→ 禁新开仓;均衡广度 50–65% → 禁 auto_add。
页面元素:顶部大卡(风险分/档位徽章/仓位上限/「只减不加 vs 可开新仓」结论/硬闸门);六维风险条形图;
ECharts 风险分走势(按档位分色带,叠加上证收盘,窗口 60/120/250/全部);最近 20 日原始指标明细表;分档统计参考表("这个分数历史上对应什么回撤概率");支持 ?date= 回看历史某日。
⚠️ 诚实标注:风险分测的是下行尾部风险 + 波动放大,不预测涨跌方向——回测中风险分与「未来 20 日回撤 ≥5% 的概率」单调正相关(L0 13.7% → L5 24.8%), 但与未来收益方向无稳定单调关系(呈 U 型,L2 中段最差、L5 极端恐慌反弹最强)。高风险 ≠ 必跌。仓位上限因而是 V 型(L5 10%→30%),为高弹性杠铃而非稳态结论:样本仅 119 天,若极端恐慌后不反弹(如系统性风险/政策转向)则高位成接盘,务必控总仓。
python3 scripts/risk_daily.py # 每日刷新(唯一写入入口)\npython3 scripts/risk_daily.py --backfill # 全量回填
📰 事件结构占比页(每日财经事件结构化 → 结构曲线,v2.51.0)
页面 /events(API GET /api/events?date=&window=&method=)。
把每天 07:00 采集的财经大事件结构化落库(market_events 表),并画出
类型结构占比曲线(滚动窗口堆叠)、多空净分曲线、事件密度,支持按日期回看。
| 维度 | 取值 | 说明 |
|---|---|---|
| type(9 类互斥) | 货币政策 / 经济数据 / 地缘政治 / 产业政策 / 大宗商品 / 海外市场 / 公司事件 / 资金情绪 / 其他 | 按优先级顺序判定(货币 > 数据 > 地缘 > 政策 > 大宗 > 海外 > 公司 > 资金 > 其他) |
| region | 国内 / 海外 | 按地域关键词判定 |
| scope | 大盘 / 板块 / 个股 | 影响范围 |
| direction | 多 / 空 / 中性 | 口径锁死 = 对 A 股大盘的影响方向(不是事件本身好坏);多空并存或判不了 → 中性 |
| strength | 1 弱 / 2 中 / 3 强 | 事件强度 |
双轨分类:占比曲线默认只统计规则轨(关键词匹配,零依赖、可复现、可回溯);
LLM 仅兜底规则未命中事件,单列 classify_method='llm' 并单独出对照曲线,不混入主曲线。
⚠️ 诚实标注:多空净分 = (多 − 空)/(多 + 空),是辅助线且含标注偏好,不是独立交易信号; 滚动窗口按「有事件的日期序列」滑动(非自然日);事件日 < 20 时页面/报告必须明示「不足以研判趋势」,不得当作结论。
python3 scripts/events_daily.py # 每日:分类 + 入库 + 出报告(唯一每日入口)
python3 scripts/events_daily.py --show # 看某日逐条事件明细(--date YYYY-MM-DD / --all 含被过滤)
python3 scripts/events_backfill.py # 早报 md 事件回填(唯一回填入口)
python3 scripts/update_daily.py events # 接入 all 链(热度/涨停之后)
输出:Obsidian Stock/日报/事件结构占比.md(表格 + 文字读数)与同名 .json;抽检清单 Stock/日报/事件分类抽检.md。
看具体事件内容(v2.52.2):页面 /events 底部「📋 当日事件明细」卡(可选日期 + 含被过滤开关);
API GET /api/events/detail?date=&include_filtered=;命令行 python3 scripts/events_daily.py --show [--date] [--all]。
明细默认只列 is_event=1(与占比/密度曲线同口径),被过滤的纯个股公告需勾「含被过滤」才显示并标 🟡。
🧬 行为聚类选股(行为好簇 + V4,v2.26.1)
不按行业、按行为特征(近 5/10/20/60 日涨跌、量比、位置、形态等 16 维)把全市场 4700+ 股票 KMeans 聚成 10 簇,用未来 20 日收益验证簇的好坏——回答"谁在被吸筹、谁在被派发"。
核心结论(跨 6 个牛熊基准日验证):
- ✅ 好簇=深跌低位缩量(簇0 深跌放量反弹 / 簇4 低位缩量横盘):未来 20 日 +6%~+66%,胜率 74-100%
- ❌ 坏簇=高位放量追涨(簇5/9)、持续阴跌(簇1/8):未来 20 日 -5%~-61%,胜率 0-23%
- 💡 反直觉真相:主力高位放量派发、深跌缩量吸筹;追涨形态平均亏 20%,被抛弃形态平均涨 15%
- 🔬 行为板块 ≠ 行业板块(簇内 Gini 0.96+ 高度分散),同行业里高位股与低位股行为完全不同
选股方法:全市场聚类 → 好簇成员 → V4 评分 → V4≥80 + WVAD>0(资金流入)→ 去 ST → 候选。2026-08-13 实测:好簇成员 893 只 → 8 只候选(恒星科技/法拉电子/深圳能源/涪陵电力/招商证券等,全部低位缩量底部形态)。
# 行为好簇 + V4 选股(默认最新交易日)
python3 scripts/scan_behavior_v4.py
python3 scripts/scan_behavior_v4.py --date 2026-08-13 --top 30
# 聚类研究脚本(6 基准日回测 + 最新日画像)
python3 scripts/_archive/behavior_cluster_20260813.py
🌊 波谷选股扫描(双入口:行业/热点,v2.29.12)
触发条件:上证指数(sh000001)收盘出现 波谷信号(window=3 无平滑极值,find_local_extrema)——只在波谷日选股,非波谷日不触发(避免追高假信号)。波谷确认按环境自适应(v2.29.51 方案A,老板 2026-08-28):bear→+2日、range→+1日、bull→不参与(波谷日环境判定,非确认日环境);扫描输出 trough_env/confirm_advice 确认日建议,确认日才可执行买入(实盘纪律:波谷确认前不猜底)。
环境自适应确认日依据(2026-08-28 二十组对比回测,确认日{1,2,3,5}×环境{全部/bear+range/仅bear/仅range/仅bull}):① range 震荡市 1 日确认捕捉 12 谷(3月 70%/+27%),固定 3 日只捕捉 5 谷(+3.5%)——3 日确认滞后坐实;② bear 下跌市 2 日确认最优(3月 83.3%/+177%、6月 100%/+382%);③ bull 任何确认日 1月 均为负(-24%~-55%)= 波谷中继不参与;④ 自适应(bear+2/range+1)heatmap+V4V3 回测:120日 100%/+1867%(vs 3日基准 87.5%/+506%,收益 3.7 倍)。
两种入口(v2.29.12,老板 2026-08-17 决策):--l1-mode industry=行业波谷选股(默认,L1=行业 WVAD 聚合 TOP10);--l1-mode heatmap=热点波谷选股(L1=heatmap 热点板块 TOP10,24 ETF 板块热度 40%涨跌幅+30%宽度+30%量能,剔除宽基/海外;RPS120 排序默认打开,--no-rps-sort 可关)。两者 L2~L4 相同。
热门周榜入口(v2.53.0,老板 2026-09-15):--l1-mode hot-etf-week=热门周榜 ETF 选股(L1=hotspot_stats 周榜 type=etf_sector 且≥2 天榜的板块 → 成分股池,宽基/无成分池板块自动跳过);--l1-mode hot-ind-week=热门周榜行业选股(L1=周榜 type=industry 且 ≥2 天榜的行业 → 行业内个股)。两者走与热点波谷选股完全相同的 L2→L3(纯V4)→L3.5 净额→L4(RPS120/AB) 管道,RPS 同样默认打开。参数:--hot-min-freq 2(至少 N 天榜)、--hot-window week|month(周榜/月榜)、--doc(写 Obsidian 日报)。
环境过滤(胜负手):MA60+斜率判环境——bear/range 才建议买入,bull 环境波谷照买=接飞刀(26 个 bull 波谷累计 -52%,且 bull 波谷=中继任何确认日 1月 均负)。回测(2026-08-16 新V4时间周期,确认日选股+次日开盘买+固定持有):环境过滤后 1月 76.9% 胜率 +76.97%、3月 63.6% +77.13%、6月 77.8% +157.33%。
选股链(4 层漏斗 + 资金过滤 + RPS 排序):上证波谷 → L1 行业 WVAD 聚合 TOP10(或热点板块 TOP10)→ L2 双流入候选(WVAD>0 & VFI>0,行业∈L1 板块,价格<40)→ L3 V4≥90 且 verdict∈(合理买入, 底部朦胧) 且非ST → L3.5 真实资金过滤(近5日主力净额 ≥500万,fund_flow 表;无数据保留)→ L4 排序(range 环境=资金意图加权;否则=RPS120 降序,候选20重排取 top10)→ 等权。
热点 vs 行业回测对比(2026-08-17,2年×1/3/6月,确认日+次日开盘+环境过滤+净额500万):1月 热点 +206.24% vs 行业 +63.10%;3月 +216.40% vs +115.83%;6月 +413.33% vs +244.88%——热点全面占优,优势集中在 bear 环境(6月 +418% vs +109%),range 略输行业。叠加 RPS120(热点默认):1月 +209.36%、3月 +272.58%、6月 +692.36%(RPS 增益随持有期放大)。
距峰信息(v2.29.7):输出 peak_days/peak_dd(距前 60 日峰天数与回撤)——实盘复盘规律:盈利股买入日回撤≥6%、距峰≥30天(深跌后段);亏损股都是回调初期进场(距峰 1-20 天、回撤<6%)。峰后回调初期禁止进场。
持有建议(v2.29.7):扫描输出推荐持有期——3月(60 交易日)为主、6月(120 日)为进阶;V4 是底部聪明引擎,兑现需 1-3 个月,谷买峰卖(2-8 天)是持有期错配(-25.92% 根因)。
破位卖出回测(2026-08-16):替代波峰卖出——支撑位=90 日箱体(突破前高后以前高为支撑,未突破以前低为箱底),连续 3 日收盘跌破确认卖出(confirm_days=3):胜率 71.4%、累计 +216.4%、平均持有 64.5 天,超过固定持有 6 月(+157.33%)。接入 trade_sim/real_daily 待老板确认。
# 行业波谷选股(默认)
python3 scripts/scan_wave_trough.py --l1-mode industry
# 热点波谷选股(RPS120 默认打开)
python3 scripts/scan_wave_trough.py --l1-mode heatmap
# 关闭 RPS 排序(退回 WVAD 降序)
python3 scripts/scan_wave_trough.py --l1-mode heatmap --no-rps-sort
# 热门周榜 ETF 选股(≥2天榜板块成分池 + 同管道 + 日报文档)
python3 scripts/scan_wave_trough.py --l1-mode hot-etf-week --doc
# 热门周榜行业选股(≥2天榜行业内个股 + 同管道 + 日报文档)
python3 scripts/scan_wave_trough.py --l1-mode hot-ind-week --doc
# 输出:控制台表格 + /tmp/wave_scan_YYYYMMDD.json
# 含 env_state/buy_advice/hold_suggestion/peak_days/peak_dd
# 含 trough_env/confirm_advice(环境自适应确认日建议:bear+2日/range+1日/bull不参与)
📅 日常选股扫描(每日收盘后,v2.29.24)
与波谷选股的区别:波谷选股只在指数波谷确认日(环境自适应:bear+2日/range+1日/bull不参与,v2.29.51)触发;日常选股每个交易日收盘后都能跑(不限波谷日),管道去掉 L1 行业/热点板块过滤(L1=全市场 all),其余 L2~L4 完全一致——作为每日观察池,供波谷确认日的候选预判与日常跟踪。
选股链(全市场漏斗):L1 全市场 → L2 双流入候选(WVAD>0 & VFI>0,价格<40)→ L3 纯 V4(V4≥90 且 verdict∈(合理买入, 底部朦胧) 且非ST;默认不再要求 V3,老板 2026-09-18「日常选股都改为v4」——v4v3 交集会失去很多优秀的底部个股,需对比时用 --l3-mode v4v3)→ L3.5 真实资金过滤(近5日主力净额 ≥500万,fund_flow 表;无数据股票保留降级)→ L4 RPS120 降序(候选20重排取 top N,默认10)→ 等权。
空池即信号:输出为空=当日无符合条件标的,本身就是谨慎信号(暴跌日实测 08-19:L2 165→L3 仅1只→L3.5 净额拦截→0 只,空仓正确)。被拦截个股会输出诊断(如价格抗跌但主力净额流出被 L3.5 拦截)。
环境与持有:同波谷选股口径——bear/range 建议买入、bull 不建议;输出 buy_advice/hold_suggestion(持有 3月/6月)。默认扫描日自动取最近交易日(kline_tencent MAX(date))。
# 日常选股(默认最近交易日,RPS120 排序开)
python3 scripts/scan_daily_pick.py
# 指定日期 / top N / 关 RPS / 关净额过滤 / 写 Obsidian 文档
python3 scripts/scan_daily_pick.py --date 2026-08-19 --top 20 --no-rps --net-min 0 --doc
# 输出:控制台表格 + /tmp/daily_pick_YYYYMMDD.json
# 含 env_state/buy_advice/hold_suggestion/被拦截诊断
🔥 热点统计(每日快照 · 周月榜 · 板块链 · 主线识别,v2.33.7)
定位:把每日"哪些行业/板块在涨"固化成表,滚动统计出主线 / 轮换 / 启动 / 退潮四种状态——区别于 heatmap 页的实时热度(现算不落库),热点统计是可回溯的每日快照 + 持续性识别(老板 2026-09-01 方案A:本地轻量聚合、零新数据源)。
数据源与口径:daily_hotspots 表每日聚合(行业维度=全市场 kline_tencent + industry_mapping_cache 唯一映射;ETF 维度=24 板块 ETF),涨停口径与 daily_close_collect 一致(主板≥9.5%、创业板 sz3/科创板 sh68≥19.5% 收盘价判定,含 sh68 修正);连板回溯 15 交易日;资金来自 fund_flow 聚合(2022-03 起)。综合分=0.35×涨幅 + 0.20×成交额占比 + 0.25×(涨停数/热度) + 0.20×资金净流入,TOP10 上榜。
识别规则(hotspot_stats 表,周=5日/月=20日滚动物化):持续性得分=0.5×上榜频率占比 + 0.3×连续上榜归一 + 0.2×资金持续为正占比(2022-03 前无资金数据取中性)。四态=生命周期状态机(v2.32.0 重构):
- 主线:今日上榜 且 持续≥60;周窗口需连续≥3日,月窗口需窗口内上榜≥60% 且最大连续≥3。(v2.33.0 校准:移除当日 TOP5 强度分位——旧门槛把真实长行情[最长74天]切成1-2天碎片,去门槛后工程机械74天/半导体51天完整识别)
- 轮换:窗口内上榜≥2次但未达主线(v2.33.0 校准:freq=1 的"轮换"晋级主线率 0.00%、纯噪音,不再视为有意义的轮换)
- 启动:今日新上榜且前 5 日未上榜 且 当日综合分≥60(v2.33.0 校准:低分启动 50.5% 一日游,真启动率 22.5%→34.1%)
- 退潮:掉榜前曾连续≥3天上榜 且 近3日(含今日)不在榜 且 近5日曾上榜(v2.33.0 校准:旧实现 98% 退潮是掉榜已久的陈年热点重复计数,现只标"新鲜掉榜";周榜退潮=0 属正常——退潮由月榜承载)
板块链聚合(v2.32.0 新):hotspot_chain_stats 表按大类聚合(科技链/化工链/有色链/煤炭能源链/医药链/汽车链/新能源链/消费链/金融链/基建链 共 10 条),链内任一细分行业上榜即计链上榜——解决"化工/有色等链内轮动式行情"被单行业口径系统性低估(8月有色链 10/21 天有细分上榜,但单行业 freq 仅 1-2/5 全标轮换)。
环境透视(v2.32.0 方案A,老板 2026-09-01:确认四态在牛/熊/震荡的时间价格差异;v2.33.7 行业/ETF 分开统计):hotspot_env_stats 表每日按市场环境(上证 vs MA60+斜率:bull=收盘>MA60 且 MA60 上行 / bear=收盘<MA60 且 MA60 下行 / range=其余,与波谷选股环境过滤同口径)物化四态特征——时间维度=上榜频率均值,价格维度=当日涨幅均值,type 列区分行业/ETF 分开聚合(2026-09-02 老板:混合均值无意义)。用途:验证"牛市主线更持久、熊市启动即退潮、震荡市轮换主导"等假设。页面 /hotspots「📊 环境透视」Tab 分行业/ETF 双视角 + API /api/hotspots/env-stats?window=week|month&type=industry|etf_sector(缺省 week,非法 400)。
页面与 API:/hotspots 页面(当日榜按行业/ETF 板块分开统计 / 周榜 / 月榜 / 板块链榜(周月可切) / 环境透视);API:/api/hotspots/daily|weekly|monthly|chains|env-stats(均可带 ?date=YYYY-MM-DD 回溯历史,缺省取最新;daily/weekly/monthly 支持 ?type=industry|etf_sector;chains/env-stats 支持 ?window=week|month 缺省 week;v2.33.7 起周/月榜、环境透视均分行业/ETF 双视角。⚠️ 2026-09-02 老板拍板:主线时间轴反复无法显示(v2.33.7~v2.34.0 多轮修复无效)已整体移除,API 一并删除)。
回填范围:2023-02-24 ~ 至今全部 ~854 交易日(勘误:kline_tencent 2019-2021 仅 1 只/日、2022 仅 86 只/日,全市场覆盖实起 2023-02)。每日更新已接入 update_daily.py all 八合一(15:30 收盘后自动跑,含 hotspot 子命令)。
# 手动聚合指定日期 / 回填区间 / 预览(周/月 stats 物化自动附带)
python3 scripts/hotspot_daily.py --date 2026-08-31
python3 scripts/hotspot_daily.py --backfill --start-date 2023-02-24 --end-date 2026-08-31
python3 scripts/hotspot_daily.py --date 2026-08-31 --dry
📈 RPS 相对强度因子(欧奈尔体系,v2.29.9)
个股 RPS(相对强度排名):全市场同一交易日 N 日收益百分位排名(0~100),衡量个股相对全市场的强弱——RPS120(一年相对强度)为欧奈尔体系核心。三个窗口一次算完:RPS20/60/120(20 日短期、60 日中期、120 日一年期)。
用法(2026-08-17 验证):RPS 是候选排序器而非独立选股器——全市场直接选股测不出动量(样本期 β 强+幸存者偏差),但在 V4 底部精选 + 真实资金过滤后的候选池内做 RPS120 降序重排,增益明确:回测 1月 +63.10→+81.50%(+18.4pp)、3月胜率 70→80%、6月 +244.88→+265.94%(+21.1pp)。V4 找底部(左侧)+ RPS120 排序(右侧强度)= 底部股里选最强的。
读法:RPS120≥90 为一年强势股(全市场约 9.9%);RPS20 低 + RPS120 高 = 强势回调(一年强、近期歇);RPS20 高 + RPS120 低 = 弱势股脉冲反弹(不可持续)。波谷扫描 L4 已自动按 RPS120 重排(非 range 环境,v2.29.10)。
# 取单股 RPS 快照(20/60/120 一次算完)
from pipeline_engine.factors.rps import rps_snapshot
snap = rps_snapshot(conn, '2026-08-14', (20, 60, 120))
# → {code: {20: 百分位, 60: ..., 120: ...}}
# 全市场 4770 只约 22s;横截面因子需全市场同日收益排名(参照系 kline_tencent,不含北交所)
🧠 资金意图分析(五维综合,v2.29.0)
综合资金意图:五维输入(量比 / WVAD MA5-21 金叉死叉+轨迹 / VFI 250日四态 / 真实资金 fund_flow 近5-10日净额 / 市场环境)→ 输出意图标签(吸筹/拉升/出货/观望/超跌企稳)+ 建仓建议(适合/观望/回避 + 分维理由 + 置信度)。
环境差异化(方案1):range 环境正向逻辑(规则表);bull 环境不追高(除价格回落的回调低吸外一律观望/回避);bear 环境只描述意图、建议仅观望/回避、置信度封顶 0.3——三档设计来自验证:bull 追高=诱多(r20 -0.21 显著反向),bear 无信息,range 是唯一稳定有效环境(r20 +0.108,高分 vs 低分 20 日收益差 4.85pp)。
用法:个股资金状态分析报告(人话+证据),非机械买入信号;波谷扫描 L4 range 环境用它做资金意图加权排序(w=0.5,回测 range +4.63pp)。
# 单股资金意图分析
from pipeline_engine.analysis.fund_intent import fund_intent
fund_intent('sh688126', '2026-08-14')
# → {scores: {fund, wvad, vfi, vol}, intent, advice, confidence, reasons}
🎯 个股多维度分析(九维评级,v2.29.43)
九维综合评级(老板 2026-08-26 定维度框架):行业属性(板块热度 heat + 行业份量成分股数)/基本面(净利增速+ROE+现金流,LLM 定性解读)/ 估值(PE 分档 + PB 回退 + 亏损警示)/ 技术面(均线排列 + 距 MA60 压力 + V4/V3 引擎佐证)/ 资金面(近5日主力 + 超大单方向)/ 主力行为(筹码信号 + 事件压制)/ 消息面(东财 search-api 个股新闻 + DeepSeek 研判,LLM 失败降级中性)/ 综合(均权)/ 交易计划(止损=成本-1% + 目标1=MA60 + 目标2=前高限幅 + 仓位比例)。
数据可靠性:数值型(PE/PB/ROE/现金流)走结构化源(新浪财务指标页 → financial_detail 表,实测 LLM 记忆 PE 过期 15 个月不可靠);LLM 只做定性解读(财报解读/消息面研判),不产出数值防幻觉。
仓位映射:综合 ★5→20% / ★4→15% / ★3→10% / ★2→5% / ★1→0%(单票占总仓比例,熊市环境可打折)。
# 单股九维分析 (CLI, 自动抓新闻+LLM研判)
python3 pipeline_engine/analysis/stock_report.py sh600499 科达制造 2026-08-26
# 或代码调用
from pipeline_engine.analysis.stock_report import _load_code_data, build_report, render_markdown
from pipeline_engine.analysis.stock_report import fetch_stock_news, news_rating
d = _load_code_data('sh600499', '2026-08-26')
news = fetch_stock_news('科达制造'); s, l, r, sm = news_rating(news)
d.update(news_stars=s, news_label=l, news_reasons=r, news_summary=sm)
report = build_report(code='sh600499', name='科达制造', **d)
print(render_markdown(report))
数据补充:financial_detail 表(EPS/每股净资产/净利增速/经营现金流回报率,2026-08-26 起采集)→ PE/PB 全市场计算;六只持仓九维报告存 Obsidian/Stock/plan/2026-08-26-持仓九维分析报告.md。
页面入口(v2.29.45):个股详情页九维卡片已上线 —— 打开 /stock/代码 即可看到「🎯 九维评级」卡片(默认快速返回数据维度,不阻塞页面;点「🤖 LLM 解读」获取财报定性 + 消息面研判)。
⛏️ 本地四星挖掘(全市场六维评分,手工触发 v2.35.0)
为什么做(老板 2026-09-06 指令):九维分析需外部消息/LLM,无法全市场批量跑。本工具纯本地数据对全市场打分,产出「准四星池」,最后消息面确认交给人工/九维复核。
六维评分(总分100,对标九维 ★4;v2.35.1 校准,老板 2026-09-06 五条建议评审采纳②③④⑤、①TTM暂缓):V4 技术面 30(≥90→30/80-89→24/70-79→18)+ 筹码主力 25(低位吸筹 18/锁仓·拉升 12/深套 6/派发 0/无数据中性 13,权重 15→25——筹码吸筹是中线 alpha 源,回测低位吸筹 r60 +11.27%)+ 资金面 15(近5日正天数+累计+当日,权重 25→15——回测证明短期资金不产生超额)+ 估值 15(PE 分档 + 行业相对 PE:有行业中位时按 ratio=个股PE/行业中位 分档 <0.6→15/<1.0→13/<1.5→10/<2.0→7/≥2→4,成长行业自动放宽、无中位走绝对档兜底;负 PE 软标记 5;PE 5年分位本地无历史序列暂缓)+ 财务 10(亏损股明确 3 分档而非中性 5,盈利+高增长=10,除非人工复核确认周期底部)+ 行业热度趋势 5(当日 TOP10→5 / 不在榜但近5日上榜≥2→3 / 月窗口 persist≥50→+2,等效 RPS 趋势无需新采集)。
规则:V4<70 不入候选;verdict=信号模糊 扣 5 分;ST 剔除;V4 全量约 75s(8 并行);结果 JSON 存档 db/fourstar_mining_<date>.json。
验证(方案C,2026-09-06,09-04 全市场 4762 只):与 37 只九维结果对照——已知 4星锚全部命中(万辰 81/科达 80/新易盛 80),2星锚(宏英智能/华天科技等)全部排除;观察列表 6 只中 5 只入选(山煤国际 V4<70 排除符合判断)。v2.35.1 校准后重跑(新权重 筹码25/资金15):4星锚仍在列(新易盛 88 升至榜首——行业相对PE释放成长股估值、科达 79/赛力斯 80/万辰 76),2星锚仍排除;中际旭创/法拉电子/东鹏/新乳业等消费成长浮出,资金强但筹码平的华电辽能/福能/青农商行降位——符合"筹码比资金更预示中线"方向。详见 Stock/观察池/2026-09-06-四星挖掘-本地六维.md。
# 手工触发全量挖掘(不挂每日自动;数据截至最新交易日)
python3 scripts/scan_fourstar.py # 全市场 → top40 准四星池
python3 scripts/scan_fourstar.py --date 2026-09-04 # 指定日期回溯
python3 scripts/scan_fourstar.py --top 50 # 输出前50
python3 scripts/scan_fourstar.py --min-v4 80 # 提高 V4 底线(更严)
python3 scripts/scan_fourstar.py --json # JSON 输出
兄弟工具 — 持续资金流入监控(scan_capital_monitor.py,老板 2026-09-05,手工触发):近5日≥4天净流入为正且累计>0 =「持续吸筹」→ 严格模式走波谷选股 L2-L4 漏斗(双流入→V4/V3→净额≥500万→RPS120),宽模式(--above-ma5)取持续流入∩收盘站上MA5(≤5% 温和启动,剔除ST)按净额 top30。回测结论:该模式相对全市场无显著超额,定位资金异动监控雷达而非买入信号(资金面只作候选加分项)。
# 资金监控(手工触发)
python3 scripts/scan_capital_monitor.py # 严格模式 纯V4 top10
python3 scripts/scan_capital_monitor.py --above-ma5 # 宽模式:流入∩MA5 温和启动 top30
python3 scripts/scan_capital_monitor.py --date 2026-09-04 --l3-mode v4
📋 观察池持续跟踪(watch_pool.py,老板 2026-09-06 方案A):把发现标的(四星挖掘/波谷选股/日常选股/九维/持仓/手工)入池后每日自动跟踪——复用六维评分(v2.35.1)+ 量价异常检测(AnomalyAnalyzer),状态自动流转:🟢可参与 ready(总分≥75 且 V4≥90 且 verdict=合理买入/底部朦胧,且上证处于3日滚动上行段——MA3 判向无未来函数,下行段高分降级 active 等回升)→ 附参考买点;🟡人工复核 review(触发风险异常信号:放量破位/滞涨/顶背离等,缩量上涨·锁仓、底背离等中性信号不误报);🔴自动移出 removed(总分<60 或 V4<70 连续 2 交易日不达标,留痕可查);⚪观察中 active。评分历史存 watch_scores 表(可追溯星级变化),Obsidian 报告自动更新(Stock/观察池/观察池跟踪.md),列表页 /watchpool 实时查看各分值。
📌 关注 = 人工审核通过的候选(老板 2026-09-19 方案A + 不自动移出):列表页每行股票名前有 ☆ 按钮,点击 → 写 follow=1 + follow_at,进候选分类(顶部「📌 候选(关注)」计数卡 + 分类筛选「只看候选」),为后面买入时快速定位。关注股豁免自动移出(与持仓源同规则,连续不达标不 removed);已被自动移出的股票被关注时复活为 active(stale_days 归零,removed_date 保留留痕)。取消关注保留 follow_at(最后一次关注时间留痕)。写库唯一入口 watch_pool.set_follow;API POST /api/watchpool/follow body {"code","follow"}(缺 follow 默认 true);GET /api/watchpool?follow=1 只看候选,响应含 follow_count;Obsidian 报告新增「📌 候选(人工审核通过,不参与自动移出)」小节。
🔁 买入→观察→清仓 闭环(老板 2026-09-19):入池(基础选股条件)→ 人工排查 → 点关注=可买候选 → 录入买入=转『持仓』源(关注标记自动清掉,原来源并入 sources 留痕)→ 持仓每日跟踪(持仓源豁免自动移出,连续不达标只标「⚠️ 评分转弱、考虑减仓」)→ 录入清仓=自动移出(removed_reason=已清仓YYYY-MM-DD)。买入/清仓在 /trade 页面录入时实时同步 positions 与观察池(写入口为 /api/trade/real/add 与 DELETE /api/trade/real/position/<pid>);每日 cron 再跑一次 watch_pool.py sync-holdings 对账兜底(幂等)。对账口径:实盘 = accounts.type='real' 且 positions active(模拟仓不入池)。
# 闭环同步(业务库 stock_app.db)
python3 scripts/watch_pool.py hold-opened --code sh603906 --name 龙蟠科技 --date 2026-09-18 # 买入→转持仓+清关注
python3 scripts/watch_pool.py hold-closed --code sh603906 --date 2026-09-22 # 清仓→移出
python3 scripts/watch_pool.py sync-holdings --date 2026-09-19 # 对账(幂等)
python3 scripts/watch_pool.py sync-holdings --dry # 试跑
# 观察池操作(业务库 stock_app.db)
python3 scripts/watch_pool.py add --code sz300401 --name 花园生物 --source 持仓 --reason "波谷热门持仓"
python3 scripts/watch_pool.py daily --date 2026-09-05 # 每日收盘后跟踪(cron 北京 20:15)
python3 scripts/watch_pool.py auto-add --date 2026-09-05 # 全市场挖掘达标自动入池(v2.38.0)
python3 scripts/watch_pool.py status # 当前池状态
python3 scripts/watch_pool.py report # 重写 Obsidian 报告
python3 scripts/watch_pool.py remove --code sz300401 --reason 连续不达标
🧩 多源入池 + 每源独立过滤(老板 2026-09-15 多源重构 v2.55.0):观察池入池从「单一管道」升级为多源 + 每源独立过滤。源注册表 watch_source_rules(stock_app.db):source(PK)/enabled/daily_cap/priority/filter_json/note/updated_at。auto-add 遍历启用源(priority 升序),每源取候选 → 同票去重(多源命中只入池一次,add_reason 合并两源,priority 小的先入)→ 单源日上限 + 全局日上限 20 只(多源叠加兜底)→ 走唯一入口 add_stock。当日完整性标记 ok=1 与 breadth 均衡日(50-65%)闸门对所有自动源生效。新增源 = 加一行规则 + 一个取候选纯函数,不改主流程。多源可见化(老板 2026-09-17 A):watch_pool 增 sources 多值列(同票命中多个源时全部记录,主 source=priority 最小者),页面/API 按源筛选改为包含匹配,行内按 sources 渲染多枚徽章(热榜源绿标、前高突破深色弱信号标)——修掉“热榜选了但按源筛不到”的盲区(同票多源时以前只记在 add_reason 里)。热榜源可复活 removed(同日 C 限定版):被移除过的标的仅热榜两源(热门ETF/行业周榜)可自动重新入池(清 removed_date/reason、add_date 刷新,原移除原因写进 add_reason 留痕),日常选股/前高突破仍“removed 不自动复加”(避免反复骚扰)。
默认源:热门ETF周榜选股(--l1-mode hot-etf-week,type=etf_sector,cap5)· 热门行业周榜选股(--l1-mode hot-ind-week,type=industry,cap5)· 板块链热门周榜选股(--l1-mode hot-chain-week,板块链,cap5,老板 2026-09-30)· (⚠️已停用:老板 2026-09-30「去掉日常选股」,auto-日常选股watch_source_rules.enabled=0,如需恢复改回 1)· (⚠️已停用:老板 2026-09-30「去掉前高突破」,前高突破enabled=0,如需恢复改回 1)。信号类源 (⚠️已停用:老板 2026-09-30「双100源也停掉」,双100enabled=0 且扫描 cron v34-dual-scan-daily 已 --disable;个股页双100标注保留)、(⚠️已停用:老板 2026-09-30「停」,V3连击enabled=0)、V4连击 / 三零跌透 / 上涨钝化 均不自动入池(仅个股页信号标注 / 待复核打印)。旧合并源 热门周榜选股 标 deprecated(历史行保留)。热榜两源均取连续≥2天上榜的板块/行业(老板 2026-09-15 由 4 天放宽到 2 天),走 L2→V4≥90(纯V4)→净额≥500万→L4(AB+RPS120),各自独立取候选/独立 add_reason(含板块名+上榜天数)/各自独立日上限 5(合计≤10)。
⚠️ 前高突破为弱信号(scan_breakout.py;已停用 2026-09-30,不再自动入池,历史行保留):老板 2026-09-15 语义收紧「刚突破,不是已经涨高」——事前可见条件(收盘>前60日高 · 位置≥80 · 幅度(0,2%] · 近5日首次突破 · 20日涨幅≤上限(默认不限) · 量比0.8-1.5 · 上影>1.5% · 涨幅<9.5% · 非ST)选出的「优组」T+5 超额约 +0.51%、胜率 43.6%、T+10 +0.67% → 定位「排雷/观察」而非买入信号,页面/日报对该源行加弱信号提示样式。阈值可调:--max-ext/--min-ext/--fresh-days/--max-gain20;胜率审计可 python3 scripts/scan_breakout.py --date 2026-09-15 --audit(优组/劣组/基线 × T+5/10/20 + 分半稳健性)。持仓源豁免自动移出(连续不达标只标「⚠️ 评分转弱、考虑减仓」);候选同分同净额时以 MA5 站上/上穿做 tie-break。
📈 MA5 状态徽章(个股详情页,老板 2026-09-15 语义修正:要「刚站上」,不看涨幅):三态——⚡刚刚站上 MA5(首次上穿:上一交易日收盘 ≤ MA5 且今日收盘 > MA5)/🟢站上 MA5(已在上方非首次)/🔴跌破 MA5(今收 ≤ MA5)。原「强上穿(涨幅/偏离大)」档位已删除;当日涨幅、相对 MA5 偏离幅度只作描述信息,不作强弱标签。诚实提示:首次上穿单独超额≈0(T+10 +0.22%/胜率44.2%/n=35385),仅作状态描述、非买入信号;唯一有超额子集是旧的「大幅上穿」(幅度>1.5% 且 60日位<35%,T+10 +3.01%)。
# 多源自动入池(v2.55.0)
python3 scripts/watch_pool.py auto-add --date 2026-09-15 # 遍历启用源
python3 scripts/watch_pool.py auto-add --date 2026-09-15 --dry # 试跑(含单源/全局上限截断说明)
python3 scripts/scan_breakout.py --date 2026-09-15 --top 10 --audit # 前高突破弱信号扫描+胜率审计
# /api/watchpool?source=前高突破 # 按源筛选;响应含 by_source 各源计数
# /api/watchpool?follow=1 # 只看候选(已关注);POST /api/watchpool/follow 切换关注
🛡️ 数据完整性保障 + 自动入池(data_integrity.py,v2.38.0,老板 2026-09-06):完整性检测 cron 每日北京 19:30 检查 5 张表当日数据(kline_tencent≥4700 / kline_index_etf≥1500 / fund_flow≥4700 / chip_trace≥4500 / daily_hotspots≥10),全齐写 采集完整性标记(stock_kline.db 的 data_integrity 表 ok=1),缺失则后台自动触发补采(update_daily 子命令 / fundflow_daily_all)并复检——采集 cron 失效也会被发现并重激活。观察池 cron(北京 20:15)执行前先验当日标记 ok=1(数据不可信不评分),再跑 auto-add:全市场六维挖掘达标标的(总分≥75 且 V4≥90 且 verdict 合理买入/底部朦胧 且非ST)自动入池(removed 后仅热榜源可自动复活,其余需人工重入),最后池内 daily 评分+报告。
# 完整性检测(自动修复由 cron 驱动;fundflow 单路安全模式需约2h)
python3 scripts/data_integrity.py --date 2026-09-04 # 检查+写当日标记
python3 scripts/data_integrity.py --json --repair # JSON 输出+缺失表补采命令
🔁 换手率持续跟踪与分析(scan_turnover_track.py,老板 2026-09-07 方案A):每日对观察池个股算换手率信号并落库(turnover_track 表),从历史跟踪发现可用信息——复用 turnover_analysis 五维规则(市值9段分档换手带 / MA250年线位置 / MA60趋势 / 四个极端信号 / 连板专属,终极口诀:低位放量是兄弟高位放量是仇敌)。个股视角输出:甜区密集段(连续 zone=good=吸筹活跃窗口)、地量后复活、沉寂后首次进甜区(启动前兆)、缩量锁仓 attack(上升趋势 vol_ratio≤0.7)。数据源 fund_flow.turnover(新浪×100口径,/100 还原)+ stock_list.total_market_cap + kline_tencent 均线。观察池页面 /watchpool 已带换手率列(最新 % + zone 徽章 + action 着色)。
# 换手率跟踪(cron 北京 20:15 watch-pool-daily 评分后自动跑)
python3 scripts/scan_turnover_track.py track --date 2026-09-04 # 观察池全量(可 --codes sz300502,sh600499)
python3 scripts/scan_turnover_track.py history --code sh600499 --days 30 # 历史轨迹+突变标注
python3 scripts/scan_turnover_track.py insights --code sh600499 --days 60 # 信息提炼(甜区段/地量复活/启动前兆)
🎯 半仓滚动做T方向标签(t_signal.py,老板 2026-09-07 讨论拍板):单票做T(留底仓吃半仓、当日进出)的日线级保障——统计验证(2023-2026 全市场370万样本):MA3上行段是动量结构(乖离>5%次日仍+1.2%卖了会飞;深回踩<-1.5%次日仍-0.33%不接飞刀);放量滞涨日次日44.7%转弱=先卖后买唯一安全窗口;日内振幅中位3.08%空间有限必须挑日子。逐股标签:🚫DANGER风险日不做T(破位/吊颈/天量换手等按预案减清)→ ⛔NO_T_DOWN下行段禁T只减 → 🪂NO_T_DEEP_DIP深回踩不接 → 🔻T_SELL_FIRST高抛日先卖后买(长上影/放量滞涨/高乖离收阴)→ 💪HOLD_STRONG强势加速拿住不T(高乖离收阳/缩量锁仓)→ 🪝T_BUY_WEAK浅回踩缩量低吸日(弱信号先买次日卖)→ ➖T_SKIP中性不值得。保障铁律:只上行段做T / 当日闭环不过夜 / 单次亏损>1.5%认错 / 底仓破MA10减半破MA20清。观察池报告+页面 /watchpool 股票名下方自动带当日做T标签。
# 做T标签(t_signal.py;观察池报告/页面已自动带上)
python3 -c "import sys; sys.path.insert(0,'scripts'); import t_signal as ts, watch_pool as wp; c=wp._conn(wp._KLINE_DB); print(ts.t_label_for(c, 'sh600499', '2026-09-04'))" # 单股
🆕 超跌首板观察清单(scan_first_limitup.py,老板 2026-09-17 选 A,把「首涨停后 20 天」研究落地):13,455 个首板事件(2023-11-06~2026-09-17,t+1 开盘买、超额 vs 全市场等权)结论——首板整体是负超额(T+20 −2.79pp、胜率 33%、中位回撤 −10.4%),但「深跌破 MA20 的首板」是唯一正超额集群:n=1414、T+1 +2.81%/T+3 +6.67%/T+20 +2.82pp、胜率 51%、20 日内浮盈≥20% 概率 65%、中位回撤仅 −0.6%;再叠加量比≥1.5 与流通<100 亿 → T+5 +4.14%/胜率 64%、T+20 +5.78%/胜率 60%(n=419)。反例(再板率高但亏钱):高位板/突破前高板/爆量板/小市值(T+20 −2.8~−4.6%、中位回撤 −12%)——「想继续涨停」和「能赚钱」是两批完全不同的票。扫描口径:当日涨停 且 过去 20 交易日无涨停(真首板)+ MA20 乖离<−5% + 量比≥1.5 + 流通<100亿 + 非ST,沪深(排除 bj);只读,非买入指令。持有参考 3~10 日、T+3 附近常为冲高点可部分止盈。⚠️ 诚实标注:该组样本 82% 集中在 2024H1(熊市末段反弹期),分半看浮盈≥20% 概率由 69% 衰减到 45%,属「市场深跌后的底部反转期现象」而非全天候规律;强势行情下几乎无命中(强势首板都在 MA20 上方,属回避档)。
# 超跌首板观察清单(只读;命中稀少,约 0.6 只/交易日)
python3 scripts/scan_first_limitup.py --date 2026-09-17 # 指定日期(默认 limitup_pool 最新日)
python3 scripts/scan_first_limitup.py --date 2026-09-17 --doc # 写 Obsidian 清单 Stock/plan/
python3 scripts/scan_first_limitup.py --code sh605288 --detail # 单只判定明细(看为何达标/不达标)
🆕 龙头识别与「龙头相」(scan_dragon.py + `/limitup` 页面区块,老板 2026-09-18「建立龙头分析,识别龙头,分析成为龙头之前的共性特征」):把「龙头研究」落成每日候选清单与页面区块。
研究结论(303 个板块行情 / 294 只龙头,2023-11-06~2026-09-17,t0 收盘选 → 次日开盘买,超额 vs 全市场等权):
① 板块起势日(行业涨停≥3)的涨停成员**整组**即正超额(n=1426、T+5 +5.96%/胜64%、超额 **+2.49%**);
② 但超额**几乎全在龙头**:龙头 T+5 +17.16%(超额 +15.01%)vs 跟随票 +3.39%(超额 **−0.39%**)——打首板必须挑板块+挑票;
③ **66% 的龙头在起势当日就涨停**(当天收盘可发现),但事前锁定精度有限:板块内按共性打分取 top1 命中龙头 **27.8%**(基线 18.7%);
④ 龙头启动日画像:60日位置中位 **78(中高位,不是深跌股)**、启动前20日已在涨 **+5.1%**、**量比 1.39(缩量涨停)**、换手 7.9%、市值中位 **60 亿**、**启动日连板≥2 仅 0.4%(几乎全是首板启动)**;
⑤ 反直觉三条:龙头**不是**深跌股、**不是**放量票、**不是**首日资金大额净流入的票。
落地规则(龙头相)= 首板 + 非ST + 60日位置 60-95 + 量比<2 + 启动前20日在涨(位置≥50) + 换手<15%:n=106、龙头命中率 **31.1%**、T+5 超额 **+8.55%**(胜60%)、T+10 +9.37%、峰值中位 +33.5%;分半同号且后段更强、年度三年全正;信号极稀(**仅 9% 交易日有信号,≈0.15 只/交易日**)。
⚠️ 观察清单,不是买入指令:无分时(封板时间/封单)、行业口径为近似(题材常跨行业)、样本稀、未扣成本。
# 龙头候选清单(只读;起势日才有候选,无候选属正常)
python3 scripts/scan_dragon.py --date 2026-09-17 # 指定日期
python3 scripts/scan_dragon.py --date 2026-09-17 --doc # 写 Obsidian 清单 Stock/plan/
python3 scripts/scan_dragon.py --code sz000980 --detail # 单只龙头相明细
# 页面:/limitup 「🐉 龙头识别」区块(每个起势板块的候选评分 + 共性标签);API:/api/limitup/dragons
📊 动态筹码分布跟踪(双算法,v2.29.32 / 每日维护 v2.29.50)
🎯 筹码位置三比值(v3.6.81,老板 2026-10-18 方案C):把筹码从「看图」变成「看数字」。 用 chip_trace 全量 377 万行 / 794 交易日 / 5090 只做超额收益回测(超额 = 减同日全市场等权,剔除大盘 beta), 找出三个真正有预测力的比值:
| 比值 | 强档 | T20 超额 | 胜率 |
|---|---|---|---|
| 现价 / 平均成本 | ≤0.80(深套) | +2.78% | 52.5% |
| 现价 / 筹码主峰 | ≤0.80(远离主峰) | +1.92% | 50.5% |
| 集中度(90%成本区间) | >0.30 较集中 | +2.21% | 46.9% |
| 集中度 | <0.05 极端分散 | -0.34%(最差) | 40.5% |
| 获利盘比例 | 70~90%(高获利盘) | -0.24%(反直觉) | 39.6% |
⚡ 三条件共振(现价/成本≤0.80 且 集中度>0.15 且 深跌沉淀>20%): 样本外验证(规则固定未调参,2025-07~2026-10)n=28,275 → 超额 T20 +3.96% / 胜率 57.9%; 对照「单纯超跌(过去20日跌>15%)」同期仅 +1.42%/47.2% → 筹码结构有独立增量信息,不是超跌反弹的复述。 叠加 V4:V4≥60 单独 +0.31%/42.7% → 加筹码三条件 +1.72%/50.5%。
📉 关键澄清:控制住「过去20日跌幅」后(分 4 层),深套档在每一层内仍有超额 (跌>20% 层 +5.00% / 跌10~20% +2.20% / 跌0~10% +1.71% / 上涨 +1.86%)→ 筹码抓的不是「跌了多少」,而是「筹码结构本身」。
⚠️ 三条局限(必读):① 命中率仅 1.9~2.7%(实测全市场 132/4998=2.6%),是筛子不是扫描器; ② 月度极不均匀(2026-05 -2.67%/胜率26%,2026-07 +5.81%/胜率66.8%)→ 不能当择时信号,只在市场企稳阶段有效; ③ 需配合 V4/V5 与大盘状态。
页面:/stock/<code> 「🎯 筹码位置三比值」卡片(含 250 日分位)
API :/api/stock/<code>/chip-cost-position
筛选:python3 scripts/scan_chip_resonance.py [--top 30] [--codes sh601127,...] [--json]
每日:update_daily.py chipresonance(在 chip 之后、backup 之前,已纳入 all 流程)
观察池:源「筹码共振」(日上限 5)
唯一实现:pipeline_engine/analysis/chip_core.py::cost_position
方案A 三窗口对比(chip_window_compare):T-120/T-60/T-20 三窗口筹码峰/成本/集中度对比 → 信号:低位吸筹 absorbing(20日峰<120日峰×0.95 且 0.9≤价/成本≤1.15)/ 深套超跌 deep_loss(价/成本<0.85)/ 锁仓待涨 locked(集中度≤0.22 且价/成本 0.95~1.2)/ 拉升途中 markup(成本上移>5% 且 1.0~1.3)/ 高位派发 distributing(20日峰>120日峰×1.05 且 >1.15)/ neutral。
📈 筹码峰移动轨迹说明与意义(窗口对比):每列 = 用「最近 N 日」K 线算出的换手衰减筹码分布(越短越近期、越长越长期)。筹码峰=该窗口内筹码最密集价位;平均成本=该窗口全部筹码加权平均成本。意义:峰/成本 下移(近20日<近120日)=套牢盘被消化、筹码向下换手 → 吸筹迹象;上移=高位换手、成本抬升 → 可能是拉升或派发;基本不变=结构稳定。配合现价:现价<120日均成本×0.85=深套超跌;现价/成本∈[1.0,1.2]且集中度≤0.22=锁仓待涨;20日峰<120日峰×0.95且现价≈成本=低位吸筹;20日峰>120日峰×1.05且现价>成本×1.15=高位派发。窗口历史不足显示 -。加长窗(500/250)仅供看长期趋势,不参与信号计算,信号口径永远锚定 120 vs 20。
方案B 换手衰减(chip_trace_signal,chip_trace 表持久化):筹码按换手率指数衰减(唯一口径,chip_core.py 实现),输出获利盘比例 profit_ratio / 深跌程度 low_chip_ratio(窗口内最高价×0.5 以下筹码占比;衡量超跌幅度,腰斩股偏高属正常,非吸筹证据) / 上方套牢盘 overhead_ratio(现价上方筹码占比)/ 成本密集区 / 集中度(90%成本区间 (P90-P10)/(P90+P10),越小越集中)/ 成本上移速度 cost_rising,判定顺序:absorbing → low_accumulated → deep_loss → high_profit → markup → locked → neutral。
🛡️ 吸筹信号闸门(老板 2026-10-13「A+C」):absorbing / low_accumulated 除原有阈值外,额外要求「上方套牢盘不重」——即现价下方筹码 profit_ratio ≥ 0.20(上方套牢盘 ≤ 0.80)。原因:low_chip_ratio 只反映超跌幅度,腰斩股天然偏高,不能单独当吸筹证据(例:华友钴业 sh603799 从 81 跌到 34,low_chip_ratio 63% 但上方套牢盘 97.8%、获利盘仅 2%——真实状态是「仍在下跌途中」,应判 deep_loss 而非 absorbing)。同时展示名由「深跌沉淀」统一改为「深跌程度」以明确其度量的是超跌幅度而非吸筹。
⚠️ 口径统一(老板 2026-10-09「1和2都做,屏蔽时间衰减,保持方法统一」):已屏蔽旧的「时间指数衰减」路径 —— chip_window_compare / chip_trace_signal / chip_trace_distribution 必须传 float_shares(统一走 chip_core 换手衰减);不传则返回 {'error': ...},绝不静默降级。low_chip_ratio 展示名 2026-10-09 由「低位沉淀」改为「深跌沉淀」,2026-10-13 再改为「深跌程度」(明确其度量超跌幅度、非吸筹证据)。
📏 集中度区间说明(判断筹码集中程度):口径 = 90% 成本区间集中度 (P90−P10)/(P90+P10)(P10/P90 为筹码累计分布 10%/90% 分位价;口径与通达信/同花顺一致,越小越集中)。实测基准池 137 只(最新日)中位 0.17、p25 0.133、p75 0.223、p90 0.273、最大 0.47。分档:≤0.12 高度集中(~13%)/ 0.12~0.17 较集中(~37%)/ 0.17~0.24 中等(~30%)/ 0.24~0.35 偏发散(~19%)/ >0.35 高度发散(~1%)。引擎阈值(chip_core 唯一实现):0.17(较集中,absorbing 闸门)/ 0.22(高度集中,locked)/ 0.24(发散,high_profit 高位派发)。意义:集中度高(数值小)=持股成本趋同、分歧小、浮筹已消化;但必须结合位置(低位高集中=底部吸筹利好;高位低集中=派发风险)。与 Δ 联合读:绝对值=水平,Δ=方向(新口径 Δ<0 收敛 / Δ>0 发散)。⚠️ 2026-10-14 前旧口径为「主峰±3% 区间占比(越大越集中)」,已废弃。详见 Obsidian:Stock/plan/2026-10-09-筹码集中度区间说明.md。
回测验证(2024-01~2026-08,29.4 万样本 r60):低位吸筹 +11.27%、低位沉淀 +10.96%、深套超跌 +10.22%(对照 +5.67%)——底部筹码结构是有效中线买入信号;高位获利 +2.33%(-3.3pp)反向卖出信号;获利盘<20% 买入、>70% 回避(分桶胜率严格反向)。
数据维护:chip_trace 表每日收盘后随 update_daily.py all 自动更新全市场筹码快照(v2.29.50 接入,此前 08-21 后曾中断 6 日已补采 7 日 33362 行)。
⚠️ v3.2.0 筹码核对与修复(老板 2026-09-23「对筹码分布进行核对,数值是否都正确」):
· 模型:默认 model=decay(换手衰减,标准筹码分布——总量归一到流通股本、旧筹码按换手率衰减);?model=volume 回退旧的「区间成交量直方图」(总量=累计成交量,会 > 流通股)
· 口径统一:shares_pct 一律 = 占总筹码(合计 100%);float_pct = 占流通股;peak_pct = 峰位占总筹码
· 已修缺陷:① 流通A股字段读反(腾讯 [72]=流通A股 / [73]=总股本,代码误读 [73] → 筹码分母偏大 17.2%(招商证券)~69.9%(中国平安));② 81.7% 股票 float_shares 缺失(新增唯一同步入口 scripts/sync_float_shares.py);③ 页面「回溯天数」误显示 571 价档 → 改「120 交易日 / N 价档」;④ 聚合层漏最低价档导致合计 98.75%
· 复现:python3 scripts/sync_float_shares.py --all|测试 tests/test_chip_semantics.py、pipeline_engine/tests/test_circ_shares_mapping.py、pipeline_engine/tests/test_float_shares_sync.py
# 单股筹码双算法分析(代码调用)
from pipeline_engine.analysis.chip_trace import chip_window_compare, chip_trace_signal
sig_a = chip_window_compare(closes, highs, lows, vols) # 三窗口对比 → 信号A
sig_b = chip_trace_signal(closes, highs, lows, vols) # 衰减模型 → 信号B
# 全市场筹码快照(每日维护)
python3 scripts/update_daily.py chip
九维评级联动:筹码信号作「主力行为」维度(locked/absorbing 加分,deep_loss 减分);「资金面」与筹码交叉验证(吸筹+资金流入=最优组合,回测 r60 +13.92%)。
📆 行业个股周期提醒表(v3.1.0)
页面:/cycle(nav「观察 → 📆 行业周期」)
| 块 | 内容 |
|---|---|
| ① 本月提醒 | 本月历史强势/弱势行业 + 可信度徽标(跨年一致率、年数) |
| ② 行业×12月热力表 | 红=历史超额正 / 蓝=负;斜体灰=样本不足(仅线索);点行业看逐月图+该行业个股 |
| ③ 节假日前瞻 | 春节/国庆/五一等 节前/节后 表现与操作含义(接 holiday_study.json) |
口径:个股月收益 − 大盘月收益 → 再按同月跨行业去均值,即剔除大盘共同季节(2月强/10月弱)后的
「行业独有月份偏离」。consistency=该月跨年为正比例,n_years<2 标「样本不足·仅线索」。
核心结论(买预期卖事实):电力用电高峰在 7-8 月,但股价超额最强在 3月+5.7% / 5月+7.8%, 8 月反而 -3.3%;旅游/酒店在国庆旺季月最差;煤炭冬储行情体现在 1 月(+7.2%)。 例外:军工/航天装备 12 月 +10.7/+13.3%(Q4 订单交付结算,属业绩兑现型)。 → 旺季前 2-3 个月布局,旺季数据最漂亮时减仓。
数据源:industry_cycle 表(scripts/rebuild_industry_cycle.py 重建,月频)
+ db/holiday_study.json。文档:Obsidian Stock/plan/2026-09-23-行业独有周期与季节性实证.md。
局限:样本 46 个月 → 每「行业×月」仅 3-4 个观测,属线索非定论;行业分类为自建 175 标签(非申万标准)。
💰 资金流入分析(3/5/10/20 日,全市场 + 每行业 top50,v3.0.0)
页面:/fundflow(导航「观察 → 💰 资金流入」);行业两级页 /fundflow/industry/光模块通信。
窗口切换 3/5/10/20 交易日,分类切换 全部 / 按行业 / 按概念链,排序切换 净额 / 净额占比 / 超大单 / 连续流入。
口径(老板 2026-09-22 拍板,三项全给):净额 = Σ主力净额;净额占比 = Σ净额 / Σ成交额(成交额按日反推 netamount/ratioamount);连续净流入天数 = 从最新交易日往前连续净额>0 的天数;另有超大单净额、窗口内复利涨跌、累计换手。
预计算:scripts/rebuild_fund_flow_rank.py(唯一写入入口,WRITES_DB)→ 表 fund_flow_rank(as_of, window, code, ...),
每天 4770 只 × 4 窗口 ≈ 1.9 万行;接口读表 40~70ms(实时聚合需 1.7s)。cron fund-flow-rank-daily(北京 19:50,接数据完整性 19:30 之后)。
保留逐日快照 → 支持历史榜单与「新进/掉出 top50」对比(页面右下角)。
API:GET /api/fundflow/top?window=5&category=industry&name=光模块通信&sort=ratio&limit=50|
GET /api/fundflow/industries?window=5|GET /api/fundflow/meta。
用法提示:看「钱往哪去」用 20 日(趋势);看「刚启动」用 3 日(新进榜 + 连续流入天数);占比列用来剔除大票通吃(同样 60 亿,京东方占比 14.6% vs 新易盛 7.8%)。
💰 行业资金全景(全量 WVAD/VFI 资金流轨迹 + 真实资金,v2.29.6)
全市场 128+ 东财细分行业(industry_mapping_cache.json,4770+ 只成分股)的资金流 1/3/5 周轨迹,四维度看板块资金:活跃度(成交额占比)、短期资金方向(WVAD)、中期资金趋势(VFI)、真实主力资金(netamount)。
state_label 新语义标签(v2.29.6 更正用法):WVAD 用 金叉/死叉(MA5/21 交叉,wvad_state)、VFI 用 四态(流入确认/流入减弱/流出减弱/流出确认,vfi_state trend_window=20)——替代旧的单日值符号翻转标签(交叉验证:VFI 单日值与真实资金仅 52.2% 一致≈抛硬币,不能当资金方向用)。旧 trend_label 字段保留兼容。
netamount 真实资金轨迹(v2.29.6 新增):行业成分股逐日 fund_flow.netamount 之和(真实主力净额,2022-03 起全市场),同 1/3/5 周轨迹 + 金叉/死叉标签——量价代理(WVAD 80.5% 一致)与真实资金互相印证。示例(2026-08-14):通信设备 WVAD 金叉 + 真实资金金叉 +15.2亿 = 三口径共振最强;半导体真实资金 +29.3亿由流出转流入但 MA 仍死叉 = 资金刚拐头未确认。
| 维度 | 指标 | 特性 | 展示单位 |
|---|---|---|---|
| 活跃度 | 成交额占比 | 板块成交额/全市场,看关注度变化 | 百分比(含 1/3/5 周变化率) |
| 资金方向 | WVAD | MA5/21 金叉死叉(新语义) | 万元 + 状态标签 |
| 资金趋势 | VFI | 250 日四态(新语义) | 万元 + 状态标签 |
| 真实资金 | netamount | 成分股主力净额之和(2022-03 起) | 万元 + 金叉死叉 |
展示格式:4 点绝对值序列(5周前→3周前→1周前→今日)+ 方向标签:
半导体:
WVAD -62108→+37826→-2031→+10400万 [由流出转流入]
VFI +5177→+4032→+3295→+2766万 [流入收窄]
电子化学品Ⅱ:
WVAD -120→+480→+960→+1150万 [流入持续增强] ← 半导体上游联动
方向标签 9 档(端点对比 t5w vs today,±1% 容差):
| 场景 | 标签 |
|---|---|
| 负 → 正 | 由流出转流入 |
| 正 → 负 | 由流入转流出 |
| 正 · 前小后大 / 相等 / 前大后小 | 流入持续增强 / 流入持平 / 流入收窄 |
| 负 · 前小后更负 / 相等 / 向零收敛 | 流出加深 / 流出持平 / 流出收窄 |
| 全零 | 中性 |
全量行业口径(2026-08-14 升级):行业成员取自 industry_mapping_cache.json(东财细分行业,key 带 sh/sz/bj 前缀),不再用 12 大行业手工成分(8-12 只无法反映全貌)。WVAD/VFI 统一万元整数。历史回测需自算(factor_cache 仅 137 池且截至 07-31)。
用法:结合板块轮动使用——轮入板块 + 资金提前流入(占比/WVAD 5周抬升)更可靠;资金持续流出或流出加深的板块不追。示例(2026-08-14):半导体 WVAD 由流出转流入 = 短线资金回流、VFI 流入收窄 = 中期高位略缓;电子化学品Ⅱ 双持续增强 = 上游联动最健康。
回测佐证(2026-08-12,120 交易日 106 轮入信号):轮入 + 5周前资金占比已上升 → 未来20日 +3.10%(25 样本);资金持续流出 → -2.76%(81 样本);5周资金变化率 vs 未来20日收益相关系数 +0.373。
# 行业资金全景(最新交易日全量 128 行业,全量口径万元)
from pipeline_engine.analysis.sector.fund_flow_trajectory import industry_flow_trajectory_full
# → {行业: {wvad: {t5w,t3w,t1w,today,trend_label,state_label}, vfi: {...}, netamount: {...}}}
# state_label: wvad→金叉/死叉/中性; vfi→流入确认/流入减弱/流出减弱/流出确认/中性
# 单行业旧接口(12 行业成分口径,已弃用): industry_wvad_trajectory / industry_vfi_trajectory
# 指标计算细节见 Obsidian《2026-08-14-WVAD与VFI指标计算说明.md》
🧭 板块轮动评分引擎
56 个行业板块(ETF 成分股映射)每日评分,识别主线板块与轮动节奏。
| 维度 | 分值 | 说明 |
|---|---|---|
| 热度 | 30 | 20 日涨幅分位(20)+ 量比 5/20 日均(10) |
| 资金 | 30 | 成分股成交额活跃度(10)+ 方向(10)+ 量价配合(10) |
| 位置 | 20 | 距 60 日低点(12)+ 距 60 日高点回撤(8) |
| 强度 | 20 | 站上 MA20 且 MA5>MA20(10)+ 近 2 日放量阳线(10) |
分区:≥80 潜伏/启动候选、60-79 跟随、40-59 观察、<40 回避;叠加主力净流入实时 +5 分(不进回测)。
# 板块轮动评分(最新交易日)
python3 scripts/bench/board_rotation.py
# 板块→成分股→V3/V4 闭环选股(三阶漏斗)
python3 scripts/bench/sector_stock_scan.py
# 主线扫描器(70 只行业 ETF)
python3 scripts/bench/sector_mainline_scan.py
📊 ETF 板块监控
通过监控行业 ETF 检测板块启动与切换时机(26 只核心 ETF,五阶段分类)。
- 💰 1/3/5 周资金轨迹(v2.25.7 新增):每只行业 ETF 的成交额占比在 5 周前/3 周前/1 周前/今日的轨迹——📈 资金提前流入(5 周&3 周占比双升)+ 🟢 埋伏信号 = 最稀缺机会;📉 未确认(占比萎缩)=反弹勿追。回测:轮入信号 + 资金提前流入后 20 日 +3.10% vs 未确认 -2.76%(差距 5.86pp,相关性 +0.373)
- 🟢 埋伏信号(v2.22.1 新增):底部缩量横盘后首次放量——20 日涨幅 ±8%(横盘)+ 成交额占比 60 日分位 <0.5(低位)+ 量比 >1.3(首次放量)。板块启动前的唯一可靠埋伏信号(放宽版 60 日超额 +3.26pp/胜率 59.4%;严格版 16 例超额 +21.9pp/胜率 91.7%,全部命中 924/2025-02/2026-07 等真实启动点)
- 🔧 底部放量:量比≥1.5 + 20 日新高 + 相对强度,连续 2 日确认=最强信号(10 日超额 +1.71pp/胜率 61%)
- 🚀 启动/主升:多头排列+突破
- 📈 强势回调:多头排列+缩量回踩
- ⚠️ 转弱:跌破关键均线(20 日超额 -0.91pp 可靠回避)
- 📉 弱势:空头排列
# ETF 板块轮动监控(每日收盘后)
python3 scripts/etf_sector_monitor.py
# ETF 列表页(网页)
https://stock.ncnynl.com/etfs
🔬 市场真面目(5 大观察指标)
| 指标 | 计算方式 | 解读 |
|---|---|---|
| ① 成交额+涨跌中位数 | 全市场个股涨跌中位数 + 总成交额 | 放量普涨=普惠行情最强;放量下跌=资金出逃最危险 |
| ② 股债性价比 | 1/沪深300PE - 10年国债收益率 | >6% 极端低估;3-6% 低估;<1.5% 高估 |
| ③ 两融余额 | margin_daily 表 | 连 5 降=撤退;由降转升=拐点;<25000 亿近底;>28000 亿过热 |
| ④ 新高/新低家数 | 250 日窗口 | >100 强趋势;20-100 结构机会;<20 弱 |
| ⑤ 股指期货升贴水 | IF2608 vs 沪深300 现货 | 贴水<-1% 强空;-0.5~-1% 谨慎;升水>+0.5% 看多 |
# 每日收盘后自动生成(cron 17:00 北京)
python3 scripts/bench/market_indicators.py
# 输出 → Stock/观察池/YYYY-MM-DD-市场真面目.md
📅 日报/收盘报告系统(自动 cron)
| 报告 | 触发时间 | 内容 | 输出位置 |
|---|---|---|---|
| 财经大事件 | 每日 07:00(北京) | 国内外财经大事件全景(东财快讯40条+华尔街见闻),逐条标注对A股影响,含亚太盘前异动;自动发送邮件 | Stock/早报/ + 邮件 |
| 收盘总结 | 每日 16:50(北京) | L1-L5 五维分析、ETF 板块轮动、三层联动选股、持仓异常+V4 | Stock/收盘总结/ |
| 市场真面目 | 每日 17:00(北京) | 5 大观察指标 + 综合信号 | Stock/观察池/ |
| 数据更新 | 每日 15:45(北京) | 全市场 K 线/指数/两融增量更新 | DB |
# 手动触发
python3 scripts/daily_events_collect.py # 财经大事件采集(东财快讯40条+华尔街见闻15条)
python3 scripts/daily_close_collect.py # 收盘数据收集
python3 scripts/update_daily.py all # 全量数据更新
📌 财经大事件:每日 07:00(北京)自动运行,采集东财快讯 + 华尔街见闻共 40+15 条新闻,整理为隔夜全球市场/国际大事/国内要闻/亚太盘前/操作提示五段式报告,存档 Stock/早报/ 并自动发送邮件至老板邮箱。股市早报已停用(2026-09-04 起由财经大事件替代)。
🛠️ 数据维护
| 操作 | 命令 | 说明 |
|---|---|---|
| 增量更新 | python3 scripts/update_daily.py all | pool/index/etf/margin/db/v6/chip 全链路(cron 每日自动,v2.29.50 起含筹码分布快照) |
| 筹码分布快照 | python3 scripts/update_daily.py chip | 全市场筹码分布(chip_trace 表)增量更新:峰值价/平均成本/获利盘/低位沉淀/集中度/信号/成本上移,每日收盘后随 all 自动更新(v2.29.50 接入) |
| 快速补丁 | python3 scripts/run_patch_fast.py --codes xxx --days 1200 --fetch-days 800 | 多线程补 K 线(腾讯接口 days 上限 800) |
| 补 ETF 历史 | python3 scripts/backfill_etf_history.py | 补 ETF 长历史(800 天上限) |
| 数据审计 | python3 scripts/audit_kline_quality.py | OHLC 合理性、open≈close 异常、缺失检查 |
| 修复字段错位 | python3 scripts/fix_hl_swap.py | 修复历史 high/low/close 交换脏数据 |
| 补基本面 | python3 scripts/bench/backfill_fundamentals.py | 市值/PE/ROE(腾讯+东财) |
| DB 备份 | python3 scripts/db_backup.py | 自动时间戳备份 |
🧪 回测与基准测试
| 功能 | 命令 | 说明 |
|---|---|---|
| 预设策略基准 | python3 _bench_all.py | 20 策略全量基准(2023-06-06~2026-06-05,base_pool 137) |
| 锚点验证 | python3 scripts/run_bench.py | bottom_dual_mode 锚点 +887.73% 复现 |
| 板块轮动回测 | python3 scripts/bench/backtest_board_rotation.py | 2024-01~2026-07 板块评分回测 |
| 个股信号回测 | python3 scripts/analyze_rally_presets.py | V3 信号后验统计 |
⚠️ 回测写入 DB 受 SENTINEL 保护,必须通过正式入口执行。
🌐 网页功能(stock.ncnynl.com)
| 页面 | 路由 | 功能 |
|---|---|---|
| 首页 | / | 系统概览 |
| 股票列表 | /stocks | 全市场股票搜索+列表(实时行情) |
| 个股详情 | /stock/<code> | K线+MA+OBV+RSI+V3/V4/V5/V6 评分图+量价形态+量价异常+🎯最优买入价(当日[最低,开盘]区间内 90日OHLC 高频价,K线橙色实线+顶部区间条)。⚠️ 当当日开盘价≈最低价(区间极窄)时,区间内高频价自然少,参考价值有限——此时看橙色线附近的支撑/压力线更有意义。 |
| ETF 列表 | /etfs | ETF 搜索+今日涨跌幅排序 |
| ETF 详情 | /etf/<code> | ETF K线+MA+OBV+RSI+板块监控阶段 |
| 条件组合 | /conditions | 过滤条件组合管理 |
| 策略库 | /strategies | 31 个预设策略(V0-V6 引擎) |
| 回测记录 | /backtests | 回测历史与明细 |
| 模拟仓 | /simulate | 多策略模拟交易 |
| 实盘仓 | /real | 实盘持仓跟踪 |
| 策略扫描 | /scan-all | 全策略扫描 |
| 扫描记录 | /scan/records | 历史扫描信号 |
| 热点 | /heatmap | 板块热力图 |
| 情绪 | /sentiment | 市场情绪指数(偏热/中性/偏冷) |
| 风险分析 | /risk | 六维风险分档 + 仓位上限(V 型,L5=30%)+ 开新仓许可(v2.52.0) |
| 事件结构 | /events | 财经事件结构化 + 类型占比/多空净分曲线 + 当日逐条事件明细(v2.51.0 / v2.52.2) |
🔗 推荐使用流程(完整闭环)
- 看大盘:市场真面目 5 指标 + 情绪页(/sentiment)判断仓位环境
- 看板块:ETF 板块监控 + 板块轮动评分找主线(≥80 潜伏区)
- 选个股:137 池 V3 扫描(≥80 强信号)+ 板块成分股 V3/V4 双确认(三阶漏斗)
- 定买点:V3 READY 回调到位日 + 量价收敛/洗盘确认 + 反弹质量分
- 管持仓:量价异常检测(六种信号)+ 破 MA5 退出 + -8% 止损
- 收盘复盘:收盘总结报告 + 交易记录回看