Quant

Algorithms

Selection scoring, execution state machine, and math-basement module index. Paper backtest. Not live unless marked otherwise.

Research pipeline

01

特征与打分

截面 z-score 合成 THS 热度分;人气、成交额、话题升温为主因子。

02

选股门控

v30 硬门 + 人气 walk + 基因票替换;每天 0 或 1 只。

03

执行与时点

尾盘/次开分腿;lock、regime、fuse 决定 T+1/T+2 卖点。

04

回测与账本

T+1 可卖约束、成本与硬顶;月收益与 live journal 对齐输出。

ths_v15 default weights

Cross-sectional z-scores then weighted; see Models for version-specific stacks.

因子字段权重说明
人气attn0.24热榜注意力
人气增量attn_rise0.18最稳的第二层因子
成交额截面amt_cs0.21相对全市场
量比amt_burst0.11硬门 ≥ 1.2
当日涨幅ret0.10截断防追高
话题升温topic0.12板块/主题 cohort
主力净流main0.12软加权
过热惩罚exh−0.20抗高潮

Math mechanisms

Definitions, formulas, and default thresholds for each quantitative field on the daily page; aligned with ths_v15 / v33 core.

热度打分

Score^hot(score)

score

在当日可交易池内,对每个因子 f_k(人气、人气增量、成交额截面、量比、涨幅、话题等)做截面 z-score,再按 ths_v15 锁死权重 w_k 加权求和。Score 越高表示相对全市场的 THS 热度越强。

Scorehot=kwkzk,zk=fkμkσk\text{Score}^{\text{hot}} = \sum_{k} w_k \cdot z_k,\quad z_k = \frac{f_k - \mu_k}{\sigma_k}

当日涨幅(ret1)

ret1

信号日相对前一交易日的收盘涨跌幅。用于截断追高(ext_burst / weak_close 硬门)及判定高潮日(通常 r_1 > 4% 且 burst > 2)。

r1=CtCt1Ct1r_1 = \frac{C_t - C_{t-1}}{C_{t-1}}

阈值 · 高潮判定:r_1 ≥ 4%

量比(burst / amt_burst)

burst

当日成交额(或成交量)相对过去 5 日均值的倍数,衡量资金突然放量。amt_burst < 1.2 的票不进候选池;与 ret1 联合判定高潮。

burst=Vt15i=15Vti\text{burst} = \frac{V_t}{\frac{1}{5}\sum_{i=1}^{5} V_{t-i}}

阈值 · 进池硬门:burst ≥ 1.2;高潮:burst > 2

20 日涨停基因(gene20)

gene20

过去 20 个交易日内(不含当日)单日涨幅 ≥ 9.5% 的次数。合格基因票可替换热度第 1 名;基因票可触发仓位 ×1.15。

gene20=#{d[t20,t1]:rd9.5%}\text{gene20} = \#\{\, d \in [t-20,t-1] : r_d \geq 9.5\% \,\}

阈值 · 近涨停:r_d ≥ 9.5%

信号日收盘价(close)

close

Top5 表与 K 线高亮用的信号日收盘价;尾盘腿通常以接近该价格成交(如 14:45 近收)。

CtsignalC_t^{\text{signal}}

选股门槛

Score 分差(margin)

margin

热度第 1 名与第 2 名的 Score 相对差,衡量「第一名是否足够领先」。margin 过小说明 Top2 逼近, conviction 不足,非高潮日可直接空仓。

margin=S1S2S1\text{margin} = \frac{S_1 - S_2}{S_1}

阈值 · 典型硬门:margin < 3% → 空仓

最小分差门槛(min_margin)

gates.min_margin

JSON gates.min_margin 给出的当日最小 margin 要求;低于该值且非特殊 walk 规则时执行 conviction_skip,记录为 empty。

marginθm(θm0.0250.03)\text{margin} \geq \theta_m \quad (\theta_m \approx 0.025\text{–}0.03)

高潮日(climax)

gates.climax_*

当日涨幅与量比同时过热时视为高潮。高潮日通常仓位 ×0.5,或跳过该候选;也可触发 climax_day_skip 直接空仓。

climaxr1θr    burstθb\text{climax} \Leftrightarrow r_1 \geq \theta_r \;\land\; \text{burst} \geq \theta_b

阈值 · 默认:θ_r = 4%,θ_b = 2

人气增量(attn_rise)

attn_rise

热榜注意力相对前一日的变化。walk 规则中 Δattn < 0 的候选会被跳过;是 ths_v15 中权重 0.18 的核心因子。

Δattn=attntattnt1\Delta\text{attn} = \text{attn}_t - \text{attn}_{t-1}

阈值 · 硬门:Δattn < 0 → 跳过

分腿执行

分腿权重(w_close / w_open)

w_close, w_open

总仓位拆成尾盘腿与次日开盘腿。实盘定稿常用 25% / 75%(或研究对照 15% / 85%),在 T 日 14:45 与 T+1 09:30 分两笔成交。

wclose+wopen=1,wclose,wopen0w_{\text{close}} + w_{\text{open}} = 1,\quad w_{\text{close}}, w_{\text{open}} \geq 0

阈值 · 默认:25% 尾盘 + 75% 次开

隔夜 gap 带

gap_band

次日开盘价相对信号日收盘的跳空幅度。仅当 g 落在 gap 带内(默认 [−2.2%, +2%])才执行开盘腿;否则 outside_gap 仅保留尾盘 stub。

g=OT+1CTCT,g[gmin,gmax]g = \frac{O_{T+1} - C_T}{C_T},\quad g \in [g_{\min}, g_{\max}]

阈值 · 默认:g ∈ [−2.2%, +2%]

综合买入价(buy_px)

buy_px

分腿成交后的加权平均成本;若开盘腿未成交则退化为尾盘价 C_T。

pbuy=wcloseCT+wopenOT+1p_{\text{buy}} = w_{\text{close}} C_T + w_{\text{open}} O_{T+1}

尾盘腿(leg_close)

leg_close

T 日 14:45 买入的份额;T+1 收盘卖出(除非 lock 触发持有隔夜腿)。

Qclose=wclosecashpcloseQ_{\text{close}} = w_{\text{close}} \cdot \frac{\text{cash}}{p_{\text{close}}}

开盘腿(leg_open)

leg_open

T+1 09:30 在 gap 带内加仓的份额;卖点由 lock / regime / fuse 状态机在 T+1 收或 T+2 开/收决定。

Qopen=wopenbudgetOT+1Q_{\text{open}} = w_{\text{open}} \cdot \frac{\text{budget}}{O_{T+1}}

Lock 卖点

exit_rules.lock_t1_ret

T+1 收盘涨幅达到 lock 阈值(纸面 3%–4%)时,隔夜腿不于 T+1 收盘卖出,改持至 T+2 由 regime 决定 t2o / t2c。

CT+1pbuypbuyθlock持有隔夜腿至 T+2\frac{C_{T+1} - p_{\text{buy}}}{p_{\text{buy}}} \geq \theta_{\text{lock}} \Rightarrow \text{持有隔夜腿至 } T+2

阈值 · 常见:θ_lock = 3% 或 4%

Regime 统计(T+2 卖点)

exit_rules.regime_*

T+2 开盘→收盘收益的 18 日滚动均值。均值为负时倾向 t2o(T+2 开盘卖);T+1 下影 > 2% 时可 lw_hold 改持到 T+2 收盘。

rˉ18=118i=118(rtit2o),rˉ18<0t2o\bar{r}_{18} = \frac{1}{18}\sum_{i=1}^{18}\bigl(r^{\text{t2o}}_{t-i}\bigr),\quad \bar{r}_{18} < 0 \Rightarrow \text{t2o}

K 线与价格

K 线(OHLC)

每根蜡烛表示一个交易日的开高低收。收盘 ≥ 开盘为阳线(涨,红色 #e11d48);反之为阴线(跌,绿色 #059669)。信号日可在图上高亮。

body=[min(O,C),max(O,C)],wick=[L,H]\text{body} = [ \min(O,C), \max(O,C) ],\quad \text{wick} = [L, H]

模型收益

月收益率

retPct

模型页逐月收益;由回测账本按自然月聚合,含 T+1 可卖、成本与硬顶约束。

rm=NAVmNAVm1NAVm1r_m = \frac{\text{NAV}_m - \text{NAV}_{m-1}}{\text{NAV}_{m-1}}

复合年化区间收益

y2025, y2026, from2025

对所选月份序列连乘月收益得到区间总收益;模型页 y2025 / y2026 / from2025 均用此复合公式。

R=(m(1+rm/100)1)×100%R = \left(\prod_{m}(1 + r_m/100) - 1\right) \times 100\%

累计净值

nav

月表逐月连乘的净值曲线;累计列显示 (NAV - 1) × 100%。

NAVm=NAVm1(1+rm/100),NAV0=1\text{NAV}_m = \text{NAV}_{m-1} \cdot (1 + r_m/100),\quad \text{NAV}_0 = 1

账户与仓位

可用现金(cash_before)

cash_before

买入前账户现金;A 股按 100 股一手取整得 shares / lots。

Q=cashwp100×100Q = \left\lfloor \frac{\text{cash} \cdot w}{p \cdot 100} \right\rfloor \times 100

仓位系数

size_scale

在基础分腿权重上叠乘:高潮 ×0.5、连跌 3 日 ×0.5、基因票 ×1.15、近 5 日大赢 ×1.10 等;亏后空 1 日、同代码冷却 10 日。

weff=wsclimaxsgenesstreakw_{\text{eff}} = w \cdot s_{\text{climax}} \cdot s_{\text{gene}} \cdot s_{\text{streak}}

热度打分 Score^hot

同花顺/东财热榜思路的可执行近似。每日在可交易池内做截面标准化,再加权求和得到 Top-N 候选。

Scorehot=kwkzk,zk=CS-Zscore(fk)\text{Score}^{\text{hot}} = \sum_k w_k \cdot z_k,\quad z_k = \text{CS-Zscore}(f_k)
f_k 含 attn、attn_rise、amt_burst、ret、topic 等;权重锁死在 ths_v15_stable_monthly。
  • 截面 z-score 只在当日 universe 内计算,避免前视。
  • amt_burst < 1.2 的票直接不进候选池。
  • ext_burst / weak_close 等硬门可踢掉高潮追高腿。

选股:v30 → v33 机制核

在 Top5 热度里按规则 walk,最终每天最多持 1 只。v35-light / v36 只改执行与杠杆,不改选股核。

顺序条件动作
硬门第1、第2名分差 < 3%(非高潮)空仓
硬门人气增量 < 0跳过该腿
1人气全空,且沪深300近5日 ≤ 0热度第2名
2人气全空,指数近5日 > 0热度第1名
3第2名为合格基因票100% 改选第2名
4第1名高潮 / 连跌3日 / 下影>3%前5里下一只合格基因票
5其余热度第1名
  • 合格基因票:近20日(不含当日)近涨停 ≥ 1 次,且非连跌3日、非高潮。
  • 高潮 = 当日涨 > 4% 且量比 > 2;近涨停 = 单日 ≥ 9.5%。

执行:分腿买卖与卖点状态机

实盘 harden+v2.2 与纸面 v33 共用选股,差异在 lock 阈值、弱开加重与 roll_lock。默认 15/85 或 25/75 尾盘+次开。

时刻规则
T 14:45买尾盘腿(25% 或 15%);弱开带内可加重 overnight 腿
T+1 09:30在 gap ∈ [−2.2%, +2%] 内买开盘腿(75% 或 85%)
T+1 收盘卖掉尾盘腿;T+1 收 ≥ lock 阈值则隔夜腿不卖
T+2 09:30lock / fuse / regime<0 → t2o;否则 t2c 拿到 T+2 收盘
T+1 下影 > 2%取消 regime 的 t2o,改持到 T+2 收盘(lw_hold)
  • regime 统计:T+2 开盘→收盘的 18 日滚动均值,< 0 则 t2o。
  • fuse:基因仓 T+1 开收 ≤ 0 时强制 t2o,防隔夜跳空。
  • v35-light 补丁:弱开 5/95、fuse0、lock 日再加仓 15%。

仓位、冷却与摩擦

规则系数 / 说明
高潮日×0.5
连跌 3 日×0.5
近20日基因(近涨停)×1.15;低分位再 ×1.10
近5日有大赢×1.10
亏后空 1 交易日;同代码冷却 10 日
可交易口径10bp 成本 + 硬顶 1.2(研究对照用)

数学地基 S(t)(分钟级研究栈)

math-basement 里另有分钟 Composite Score,用于 select-then-time 与阈值 walk-forward;与 THS 日线热榜栈并行,不直接等于实盘选股公式。

S=wMM+wTT+wVV+wR(100Rraw)S = w_M M + w_T T + w_V V + w_R(100 - R_{\text{raw}})
M 动量、T 趋势、V 量能、R 风险;见 scoring.py 与 end_to_end_demo。
  • M(t) = clip(50 + 18·z(r1) + 12·z(r5), 0, 100)
  • Purged walk-forward 调参:tune_thresholds.py / optimize_oos_panel.py
  • Fixed vs Realtime 两种执行时钟(execution.py)

Code modules

  • ths_hotTHS 热度打分与 Top-N
  • selection截面标准化、候选池
  • regimeT+2 卖点 regime 统计
  • executionFixed / Realtime 时钟
  • backtestT+1 库存、成本、硬顶
  • scoring分钟级 S(t) 合成
  • cvPurged walk-forward

math-basement · src/math_basement

v33 机制核对照v35-light 推荐跟踪今日预测与 Top5