diff --git a/reports/2026-06-22_latest_ipo_candidates_analysis.md b/reports/2026-06-22_latest_ipo_candidates_analysis.md index 9e020aa..dfa2f64 100644 --- a/reports/2026-06-22_latest_ipo_candidates_analysis.md +++ b/reports/2026-06-22_latest_ipo_candidates_analysis.md @@ -42,6 +42,30 @@ 基本面补充后的执行含义:短线申购仍不应改成纯基本面排序。若目标是 D1/T1 的供需弹性,`01956` 仍是当前首选;若目标是“公司质量优先”,`01688`、`03661`、`09630` 比 `01956` 更稳,但它们需要更好的临近截止热度来证明短线胜率。`01688` 尤其要分开看:公司质量是强的,IPO 交易属性暂时是弱的。 +## 破发概率和资金效率框架 + +如果目标从“谁最可能大涨”切到“谁的风险收益比更好”,就不能只看申购倍数。低倍数有两面:它提高资金效率和中签确定性,但也可能说明需求承接不强。因此新增 `ipo_break_risk_reward_v0` 防守型覆盖层,把三个维度拆开打分:`破发保护` 看 T0 结构、T0.95 需求、基本面和发行吸收能力;`资金效率` 看一手金额、低倍数带来的预期分配效率和锁资时间;`上行弹性` 看热度、题材和稀缺性。总分公式是 `5 * 破发保护 + 6 * 资金效率 + 4 * 上行弹性`,即约 50% 看破发保护、30% 看资金效率、20% 看上行。 + +历史校准给这个角度提供了两个重要底线。`analysis_model_v0_dataset.csv` 274 条 D1 标签中,全样本破发率约 29.9%;T0 分数 `>=8` 的破发率约 23.3%,T0 `<=4` 的破发率约 38.5%。发行规模也不是越小越安全:HK$50 亿以上发行样本破发率约 23.1%,低于 HK$10 亿样本约 31.9%。真正明显降低破发的是最终公开认购极强,最终公开认购 `>=1000x` 样本破发率约 9.0%;但 `10x 至 100x` 样本破发率反而约 46.0%。当前使用的是 T0.95 非官方热度,不是最终官方公开认购,所以只能当防守型排序,不是单票概率承诺。 + +| 防守排名 | 股票 | 破发保护 | 资金效率 | 上行弹性 | 防守型分 | PM 判断 | +|---:|---|---:|---:|---:|---:|---| +| 1 | `03661` | 7.8 / 中低风险 | 3.0 | 2.7 | 67.8 | 平衡最好:盈利半导体资产、发行吸收能力尚可,热度不爆但也不冷。 | +| 2 | `01688` | 7.2 / 中低风险 | 4.0 | 1.4 | 65.6 | 防守型申购逻辑成立:基本面和大体量降低破发尾部,但上行弹性弱。 | +| 3 | `01956` | 6.9 / 中低风险 | 2.0 | 4.3 | 63.7 | 不是防守票,是高热度高弹性票;资金效率差,盈利质量还没兑现。 | +| 4 | `01191` | 5.7 / 中风险 | 3.5 | 3.4 | 63.1 | 光模块题材和增长强,但亏损、低毛利、现金流压力使破发保护不够硬。 | +| 5 | `09630` | 7.0 / 中低风险 | 2.5 | 2.8 | 61.2 | 基本面防守强,但一手金额高,资金效率弱于 `01688`。 | +| 6 | `06715` | 6.3 / 中风险 | 3.6 | 1.6 | 59.5 | 基本面强于热度,冷门导致需求保护不足;适合等更近截止复查。 | +| 7 | `02272` | 4.8 / 中高风险 | 4.0 | 2.4 | 57.6 | 一手便宜、热度中性,但 T0 结构和成长性一般,防守分不高。 | +| 8 | `06915` | 5.0 / 中风险 | 4.1 | 1.7 | 56.4 | 高毛利小众医药,资金效率好;当前 1.20x 热度太弱。 | +| 9 | `09637` | 4.2 / 中高风险 | 4.0 | 2.8 | 56.2 | 18A-B 管线资产,资金效率可以,但现有利润无法提供破发保护。 | +| 10 | `03952` | 4.9 / 中高风险 | 3.6 | 2.3 | 55.3 | 机器人链条有题材,但亏损且 1.95x 热度不足。 | +| 11 | `06228` | 3.7 / 中高风险 | 4.8 | 1.2 | 52.1 | 一手低、容易中,但项目型资源资产缺少 D1 防守。 | +| 12 | `02672` | 3.8 / 中高风险 | 4.0 | 2.0 | 51.0 | 收入增长不差,但低毛利和亏损使破发保护弱。 | +| 13 | `02697` | 1.5 / 高风险 | 4.8 | 1.9 | 43.9 | 低倍数只是容易中,不等于安全;极早期商业化仍应回避。 | + +用这套体系看,`01688` 的风险收益比确实比原热度排序显示得更好:它不适合当“爆发收益第一”的票,但适合当“破发尾部相对可控、资金效率较好”的防守型候选。若只做一只追弹性,仍是 `01956`;若更重视少占资金、少破发、稳一点的 D1 退出,排序应改看 `03661`、`01688`、`09630`,其中 `01688` 可以小额参与,但不能因为 6.54x 低热度就把破发风险视为很低。 + ## 可申购名单重排 市场热度加分口径:`<10x = -3`,`10x 至 100x = 0`,`100x 至 1000x = +3`,`1000x 至 5000x = +6`。排序先看 `T0 + 热度`,再看截止时间和 PM 判断。 @@ -75,10 +99,10 @@ ## 执行建议 -- 2026-06-23 截止组:优先只看 `01956`;`03661` 可小额或等更近截止快照;`09630`、`02272`、`01688`、`06228` 不排前列。 +- 2026-06-23 截止组:追弹性优先看 `01956`;防守/资金效率口径优先看 `03661`、`01688`、`09630`。`01688` 不排在爆发主申购前列,但可作为小额防守型候选。 - 2026-06-24 截止组:`01191` 暂列第一;`09637` 次之;`02672` 因低于 10x 热度降级。 - 2026-06-25 截止组:`03952` 和 `06715` 结构分高,但当前热度太冷,必须在 2026-06-24 或 2026-06-25 截止前复查。 -- 如果只能做一只,当前答案是 `01956`;如果要分散,第二选择也应等 6 月 23 日更近截止的热度确认后再定。 +- 如果只能做一只且目标是 D1 弹性,当前答案仍是 `01956`;如果目标是少破发、少占资金、稳一点的风险收益比,优先比较 `03661` 和 `01688`,并等 6 月 23 日更近截止的热度确认后再定。 ## 本次数据接入和护栏 @@ -95,6 +119,6 @@ - VBKR/Jieli 热度页归档:`data/raw/market_heat/vbkr_ipo_hk_index_20260622T085500Z.html` - VBKR/Jieli 热度页:`https://www.vbkr.com/ipo/hk/v2/ipo-hk-index` - 模型数据集:`data/snapshots/analysis_model_v0_dataset.csv` -- 评分规则:`rules/ipo_score_v0.yaml`;`rules/ipo_score_v0_5_market_heat_trial.yaml` +- 评分规则:`rules/ipo_score_v0.yaml`;`rules/ipo_score_v0_5_market_heat_trial.yaml`;`rules/ipo_break_risk_reward_v0.yaml` - 基本面横向对比:上述 13 只候选的 HKEX 招股书抽文本,索引见 `data/snapshots/source_refs.csv` - 新增招股书:`data/raw/02697/prospectus_2026-06-22_2026062200041.pdf`;`data/raw/03952/prospectus_2026-06-22_2026062200047.pdf`;`data/raw/06715/prospectus_2026-06-22_2026062200025.pdf`;`data/raw/06915/prospectus_2026-06-22_2026062200065.pdf` diff --git a/rules/ipo_break_risk_reward_v0.yaml b/rules/ipo_break_risk_reward_v0.yaml new file mode 100644 index 0000000..97f9627 --- /dev/null +++ b/rules/ipo_break_risk_reward_v0.yaml @@ -0,0 +1,191 @@ +version: ipo_break_risk_reward_v0 +effective_date: 2026-06-22 +status: experimental_overlay +owner_skill: analyst +base_models: + - ipo_score_v0 + - ipo_score_v0_95_final_heat_trial + +purpose: > + Add a defensive risk/reward overlay for Hong Kong IPO subscription decisions. + This overlay is designed for investors who care about D1 break avoidance, + cash-lockup efficiency, and expected allocation efficiency, not only headline + first-day upside. It does not replace the heat-adjusted subscription score. + +targets: + primary: D1 non-break probability, defined as D1 sell return versus IPO offer price > 0 + secondary: + - cash-lockup and expected allocation efficiency + - D1 upside optionality + - trade-off between defensive quality and pop-seeking heat + +data_policy: + allowed_live_inputs: + - T0 prospectus structure score + - archived T0.95 market-heat multiple observed before the executable order cutoff + - offer size + - minimum subscription amount + - subscription deadline and expected allotment date + - prospectus-stage fundamentals + calibration_inputs: + - archived historical D1 return labels + - final public oversubscription buckets + - historical offer size and minimum subscription buckets + forbidden_live_inputs: + - official allotment results released after the user's order cutoff + - grey-market return + - D1 price performance + caveat: > + Current T0.95 market heat has no completed D1 labels in the archive yet. + Historical final public oversubscription can guide bucket design but must + not be treated as an input that was visible before a live order. + +empirical_calibration_snapshot: + dataset: data/snapshots/analysis_model_v0_dataset.csv + analysis_as_of: 2026-06-22T08:55:00Z + labeled_d1_rows: 274 + all_sample_break_rate: 29.9% + reference_break_rates: + T0_score_gte_8: 23.3% + T0_score_5_to_7: 26.7% + T0_score_lte_4: 38.5% + offer_size_gte_5000m_hkd: 23.1% + offer_size_1000m_to_5000m_hkd: 28.0% + offer_size_lt_1000m_hkd: 31.9% + final_public_oversubscription_gte_1000x: 9.0% + final_public_oversubscription_100x_to_1000x: 35.7% + final_public_oversubscription_10x_to_100x: 46.0% + final_public_oversubscription_lt_10x: 35.8% + +score_components: + break_protection_score: + range: 0_to_10 + interpretation: Higher score means lower estimated break risk. + components: + T0_structure_support: + range: 0_to_2 + points: + T0_score_gte_8: 2.0 + T0_score_5_to_7: 1.2 + T0_score_1_to_4: 0.5 + T0_score_lt_1: 0.0 + T0_95_demand_support: + range: 0_to_3 + points: + margin_heat_lt_1x: 0.0 + margin_heat_1x_to_3x: 0.5 + margin_heat_3x_to_10x: 1.0 + margin_heat_10x_to_100x: 1.5 + margin_heat_100x_to_1000x: 2.5 + margin_heat_gte_1000x: 3.0 + fundamental_support: + range: 0_to_3 + points: + mature_profitable_cash_generative: 3.0 + profitable_quality_growth: 2.5 + stable_profitable_low_growth: 2.0 + high_growth_lossmaking: 1.0 + early_stage_or_project_asset: 0.0_to_0.5 + note: > + This remains analyst-scored until issuer fundamentals are structured + in the dataset. Use prospectus-stage facts only. + supply_absorption_support: + range: 0_to_2 + points: + offer_size_gte_5000m_hkd: 2.0 + offer_size_2000m_to_5000m_hkd: 1.6 + offer_size_800m_to_2000m_hkd: 1.2 + offer_size_300m_to_800m_hkd: 0.8 + offer_size_lt_300m_hkd: 0.5 + note: > + Larger deals can cap upside, but the current archive shows lower + break rates for larger offer-size buckets. + + capital_efficiency_score: + range: 0_to_5 + interpretation: > + Higher score means a better chance of getting useful allocation with less + cash locked, lower one-lot cost, or shorter lockup. + components: + minimum_subscription_amount: + range: 0_to_2 + points: + lt_3000_hkd: 2.0 + gte_3000_lt_7000_hkd: 1.5 + gte_7000_lt_10000_hkd: 1.0 + gte_10000_hkd: 0.5 + allocation_efficiency_from_heat: + range: 0_to_2 + points: + margin_heat_lt_1x: 2.0 + margin_heat_1x_to_3x: 1.8 + margin_heat_3x_to_10x: 1.5 + margin_heat_10x_to_100x: 1.0 + margin_heat_100x_to_1000x: 0.5 + margin_heat_gte_1000x: 0.2 + note: > + Low heat is positive for allocation efficiency but not for demand + support. Do not confuse easier allocation with lower break risk. + lockup_timing: + range: 0_to_1 + points: + standard_two_day_cash_lock: 1.0 + longer_weekend_or_holiday_lock: 0.8 + unusually_long_or_unclear_lock: 0.5 + + upside_optionality_score: + range: 0_to_5 + interpretation: Higher score means better D1 pop potential, not lower risk. + components: + demand_momentum: + range: 0_to_2.5 + points: + margin_heat_lt_1x: 0.0 + margin_heat_1x_to_3x: 0.3 + margin_heat_3x_to_10x: 0.6 + margin_heat_10x_to_100x: 1.2 + margin_heat_100x_to_1000x: 2.0 + margin_heat_gte_1000x: 2.5 + scarcity_from_offer_size: + range: 0_to_1 + points: + offer_size_lt_800m_hkd: 1.0 + offer_size_800m_to_2000m_hkd: 0.8 + offer_size_2000m_to_5000m_hkd: 0.5 + offer_size_gte_5000m_hkd: 0.2 + theme_and_sponsor_optionality: + range: 0_to_1.5 + note: > + Analyst-scored from prospectus-stage sector narrative, sponsor + quality, and current market appetite. Use this as an option value, + not a substitute for demand support. + +combined_score: + defensive_risk_reward_score: + range: 0_to_100 + formula: > + 5 * break_protection_score + + 6 * capital_efficiency_score + + 4 * upside_optionality_score + weights: + break_protection: 50% + capital_efficiency: 30% + upside_optionality: 20% + bands: + gte_65: defensive_priority_candidate + gte_60_lt_65: balanced_candidate + gte_55_lt_60: watch_only_or_small + lt_55: avoid_unless_new_evidence + +usage: + - Use alongside the heat-adjusted IPO score, not instead of it. + - A low subscription multiple improves allocation efficiency but weakens demand support. + - A mature profitable issuer can have low break risk but low D1 upside. + - A high-heat thematic issuer can have high D1 upside but poor cash efficiency and weaker fundamental downside support. + - Re-score after T1 allotment results; official public oversubscription should replace T0.95 heat once it becomes stage-safe. + +known_limitations: + - Fundamentals are still analyst-scored rather than extracted into structured factors. + - T0.95 market-heat snapshots do not yet have completed D1 labels in the archive. + - The score is ordinal and comparative within a batch; it is not a standalone probability forecast. + - Historical bucket rates are not yet industry-neutral or market-regime-neutral. diff --git a/rules/rule_change_log.md b/rules/rule_change_log.md index dab12f1..cc84467 100644 --- a/rules/rule_change_log.md +++ b/rules/rule_change_log.md @@ -1,5 +1,28 @@ # Rule Change Log +## 2026-06-22 - Add defensive IPO break-risk/reward overlay + +Request: + +- Evaluate the current IPO batch from break probability, cash efficiency, and risk/reward rather than only heat-adjusted upside. + +Change: + +- Added `rules/ipo_break_risk_reward_v0.yaml` as an experimental overlay. +- Split the new lens into break protection, capital efficiency, and upside optionality. +- Added empirical calibration anchors from `analysis_model_v0_dataset.csv`, including historical D1 break rates by T0 score, offer-size bucket, and final public oversubscription bucket. +- Updated the 2026-06-22 latest IPO report with a defensive risk/reward ranking for the 13 current candidates. + +Rationale: + +- A low subscription multiple can improve allocation and cash-lockup efficiency, but it does not automatically reduce break risk. +- Mature profitable issuers such as `01688` may have better defensive risk/reward than their heat score implies, while high-heat names such as `01956` remain more pop-driven. + +Verification: + +- Recomputed the calibration anchors from the current model dataset. +- Checked that the overlay is documented as ordinal and comparative, not as a standalone probability forecast. + ## 2026-06-15 - Add T0.95 late-order heat stage Request: