组合市值
{{ money(ov.portfolio_mv) }}
总仓位
{{ pct(ov.portfolio_pct) }} / {{ pct(ov.portfolio_cap) }}
可用额度
{{ money(ov.cap_room) }}
账户可用 (估算)
{{ money(ov.cash_source==='ws' ? ov.cash_avail : ov.cash_est) }}
持仓数
{{ ov.names_count }} / {{ ov.max_names }}
浮动盈亏
{{ money(ov.float_pnl) }}
厚垫 / 负垫
{{ ov.solid_names }} / {{ ov.neg_names }}
强刷 + 灌行业映射
只重读
计划不带价格与金额 —— 买多少/什么价一律 PMS 自己算; 行情取不到价的票会被剔除。
计划日 {{ planStatus.date }} (日龄 {{ planStatus.age_tdays }} 交易日) ·
热度日 {{ planStatus.heat_date || '-' }} · 快照 {{ (planStatus.market_snapshot_days||[]).join(',') }} ·
上游主题上限 {{ planStatus.theme_cap }} · theme 灌映射 {{ JSON.stringify(planStatus.theme_sync||{}) }}
请求 {{ JSON.stringify(planStatus.query||{}) }} · 漏斗: 打分池
主榜 {{ (planStatus.funnel||{}).scored_main }} / 观察 {{ (planStatus.funnel||{}).scored_observe }}
→(券商预期 + 目标价≥现价 + 主题限额 + top)→ 实收
主榜 {{ (planStatus.funnel||{}).returned_main }} / 观察 {{ (planStatus.funnel||{}).returned_observe }}
按当前参数筛选: 排序池 {{ planCand.considered }} → 合格 {{ planCand.eligible }} →
取 {{ (planCand.items||[]).length }} 只 ·
白名单档位取全 {{ planCand.tier_complete===null ? '不适用' : (planCand.tier_complete ? '是':'否') }} ·
丢弃 {{ JSON.stringify(planCand.dropped||{}) }}
·
{{ planCand.st_unknown.length }} 只无名称, ST 判不了已放行
{{ (planCand.items||[]).map(x=>x.ts_code).join(' ') }}
榜单变化
重算变化
{{ chgSt.hint }}
{{ chg.kind === 'first' ? '首次落快照' : (chg.prev_date + ' → ' + chg.curr_date) }} ·
名册 {{ chg.roster_size.prev }} → {{ chg.roster_size.curr }} ·
新进 {{ chg.counts.entered }} · 掉榜 {{ chg.counts.exited }} ·
升档 {{ chg.counts.tier_up }} · 降档 {{ chg.counts.tier_down }} ·
覆盖翻转 {{ chg.counts.bucket_moved }} · 名次跳变 {{ chg.counts.rank_jump }}
·
榜尾进出 {{ chg.tail_churn.entered + chg.tail_churn.exited }} 只未计入 (那一版吃满 top,
尾部是截断噪音不是观点变化)
· 其中
{{ chg.tail_churn.held_exempt }} 只因是持仓票照报 (持仓票不受榜尾闸约束 ——
漏报一条就是一个仓位)
· 同一计划日出现多版:
{{ chgRevised.map(x => x[0] + '×' + x[1]).join(', ') }}
{{ s.row.why }}
上游把一只持仓票摘出榜或降了档, 是"还该不该继续拿着"的直接信号 ——
单独拎出来免得被几十条新进榜淹掉。它只是提示, 不自动产生任何指令:
要减要清仍走命令台或提议确认。
持仓
{{ s.row.tier_from }} → {{ s.row.tier_to }}
{{ s.row.rank_from }} → {{ s.row.rank_to }}
({{ s.row.rank_delta > 0 ? '+' : '' }}{{ s.row.rank_delta }})
主榜
同一「计划日」出现多行 = 上游那天重算过多版(UPSTREAM_PLAN_API.md §7.3:
`/plan` 是实时算的, 应答里没有 generated_at, 下游本来没办法判断手上这份是哪一版)。
指纹不含 score —— 分数抖动但次序没变不算新版本, 否则表白涨而信息量为零。
主榜明细
{{ s.row.upside==null ? '-' :
((s.row.upside>0?'+':'') + (s.row.upside*100).toFixed(0) + '%') }}
「预期空间」= 券商目标价相对现价的空间 (上游 upside 字段, 2.12 → +212%)。噪音大,
所以永不参与排序 —— 排序始终按 score; 只在 PMS_PLAN_MIN_UPSIDE 上做下限过滤。
筛选参数在「参数设置」里: PMS_PLAN_TOP_N / PMS_PLAN_TIERS / PMS_PLAN_INCLUDE_OBSERVE /
PMS_PLAN_MIN_SCORE / PMS_PLAN_MIN_SOURCES / PMS_PLAN_MIN_UPSIDE / PMS_PLAN_STALE_TDAYS。
发给上游的三个: PMS_PLAN_TOP / PMS_PLAN_OBS_TOP / PMS_PLAN_THEME_CAP (0=不传, 用上游默认
20/10/5)。PMS_PLAN_THEME_CAP_LOCAL 是 PMS 侧的同主题限额, 在 TOP_N 截断之前生效 ——
让上游别裁 (THEME_CAP 设大) + PMS 自己裁, 前 N 名才不会被单一主题垄断。
PMS_PLAN_EXCLUDE_ST 默认开: 上游名单明确不剔除 ST/*ST, 这道闸在 PMS 侧。
「主题」是传导主题(事件驱动、天天变、覆盖约三成), 不是行业 —— 行业硬拦截
请把 PMS_SECTOR_SOURCE 设成 gp_stock_category, 别用 PMS_PLAN_THEME_SYNC。
{{ planResult }}