Private
Public Access
0
0

Add IPO break risk reward overlay

Request:
- Analyze the current HK IPO batch from break probability, capital efficiency, and risk/reward.
- Test whether names such as 01688 deserve a higher defensive ranking than their heat score implies.

Changes:
- Added rules/ipo_break_risk_reward_v0.yaml as an experimental defensive overlay.
- Split the new framework into break protection, capital efficiency, and upside optionality.
- Added historical break-rate calibration anchors from analysis_model_v0_dataset.csv.
- Updated the 2026-06-22 IPO report with a defensive risk/reward ranking and dual execution guidance.
- Logged the rule change and its caveats.

Verification:
- Ran git diff --check and git diff --cached --check.
- Parsed the new YAML file with PyYAML.
- Recomputed key historical break-rate anchors from the current model dataset.
This commit is contained in:
2026-06-22 09:38:30 +00:00
parent 4c9cf85f9e
commit 915dabaaa1
3 changed files with 241 additions and 3 deletions
+191
View File
@@ -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.