Request:
- Put the actionable scoring/ranking first in the latest IPO candidate report.
- Then show fundamentals, break-risk/risk-reward, per-IPO notes, and finally the 30-day listed IPO review.
- Solidify this report order in the analyst skill.
Changes:
- Moved the current candidate ranking table to the first body section of the June 22 report.
- Moved the 30-day IPO review after per-IPO notes and waiting names.
- Added a Broad Candidate Report Layout section to the analyst skill so future broad candidate reports follow the same action-first order.
Verification:
- Ran git diff --check.
- Confirmed report heading order with rg: ranking, fundamentals, break-risk, per-IPO notes, waiting names, 30-day review, guardrails, sources.
Request:
- Add a recent one-month listed IPO review to the latest candidate report.
- Make this review a standing analyst skill requirement for future broad IPO candidate reports.
Changes:
- Added a 2026-05-22 to 2026-06-22 IPO review table covering structure, fundamentals, T1 allotment demand, D1 performance, and PM lessons.
- Mapped recent T1/D1 outcomes back to the current candidate batch and flagged the 00901 D1 price data gap.
- Added a Recent Listing Review Overlay section to the project analyst skill.
Verification:
- Ran git diff --check.
- Recomputed the recent review sample from analysis_model_v0_dataset.csv: 11 IPOs, 10 D1 observations, 9 nonnegative D1 returns, 1 negative D1 return, average D1 return 91.2%.
Request:
- Reflect that near-final market heat can be used when the user can still place an IPO order at T0.95.
Changes:
- Added T0_95_final_heat as a separate analyst decision stage with executability and no-leakage rules.
- Added an experimental T0.95 rule overlay for late-order heat scoring and calibration discipline.
- Updated archivist guidance and the market-heat archiver so snapshots can be explicitly stored as T0_95_final_heat.
- Added market_heat_stage to the analysis dataset and refreshed the model report to show T0.95 coverage separately.
Verification:
- Ran py_compile for the modified scripts.
- Checked archive_t0_5_market_heat.py --help for the new --stage option.
- Rebuilt data/snapshots/analysis_model_v0_dataset.csv and reports/2026-06-15_analysis_model_v0.md.
- Ran git diff --check.
Next useful context:
- Current archived heat rows remain T0_5_market_heat only; there are no true T0.95 rows yet.
- external_ipo_history.public_oversubscription_times is still calibration-only unless a comparable value is archived before the executable order cutoff.
Request:
- Add historical data around T0.5 margin heat and rebuild the model.
Changes:
- Add external_ipo_history to store third-party historical IPO records separately from true T0.5 market-heat snapshots.
- Add scripts/archive_ipohk_history.py to archive ipohk structured listed IPO history.
- Archive 807 ipohk rows, including final oversubscription, one-lot win rate, grey-market return, and first-day return where available.
- Extend the v0 analysis dataset with true T0.5 market-heat columns and separate external final-heat columns.
- Rebuild reports/2026-06-15_analysis_model_v0.md with T0.5 coverage and external final-heat calibration.
- Add a Chinese report explaining why historical final oversubscription cannot be treated as T0.5 margin snapshots.
- Update analyst and archivist skills to keep T0.5 and external final history separate.
Verification:
- .venv/bin/python -m py_compile scripts/build_analysis_dataset.py scripts/archive_ipohk_history.py scripts/archive_t0_5_market_heat.py
- .venv/bin/python scripts/build_analysis_dataset.py --as-of 2026-06-15T19:20:00Z
- Python sqlite3 PRAGMA integrity_check returned ok and foreign_key_check returned zero rows.
- Confirmed 807 external_ipo_history rows, 792 rows with external final oversubscription, 5 true T0.5 market-heat rows, and 297 analysis dataset rows.
- git diff --cached --check
Next useful context:
- True T0.5 historical backtesting still requires ongoing frozen margin-heat snapshots during each IPO subscription window.
Request:
- Test whether subscription-period T0.5 market heat data can be captured and incorporated into IPO analysis.
Changes:
- Add an ipo_market_heat table for non-official market-heat snapshots.
- Add a VBKR/Jieli archive script for expected margin subscription multiples.
- Archive the 2026-06-15T18:40:00Z heat snapshot for 01392, 02335, 06067, 06106, and 06132.
- Add an experimental T0.5 overlay rule file and a Chinese cross-IPO trial report.
- Update archivist and analyst skills so T0.5 remains separate from official T1 allotment demand.
Verification:
- .venv/bin/python -m py_compile scripts/archive_t0_5_market_heat.py scripts/build_analysis_dataset.py scripts/update_sync_state.py
- Python sqlite3 PRAGMA integrity_check returned ok and foreign_key_check returned zero rows.
- Confirmed 5 ipo_market_heat rows and 5 t0_5_market_heat source_refs for the frozen snapshot.
- git diff --cached --check
Next useful context:
- T0.5 data is non-official and should be resampled during the subscription window, then compared against T1 official allotment results.
Request:
- Make analyst reports Chinese by default and record the rule in the analyst skill.
Changes:
- Add a Simplified Chinese default-language rule to the analyst skill.
- Update the single-IPO report generator to emit Chinese Markdown sections, labels, actions, risks, triggers, and exit plans.
- Preserve ticker symbols, stage codes, rule ids, score buckets, and source paths as machine-readable identifiers.
- Regenerate the 06106 T0 report in Chinese.
- Document the Chinese report default in README and the rule change log.
Verification:
- Ran py_compile for scripts/generate_ipo_report.py.
- Generated a 06106 dry-run report and checked Chinese section headings.
- Regenerated reports/2026-06-15_06106_T0_prospectus_analysis.md.
- Ran git diff --check.
Next useful context:
- Future analyst prediction and review reports should be written in Simplified Chinese unless the user explicitly requests another language.
Request:
- Include the concrete T0, T1, T2, and D1 dates in every analyst report.
Changes:
- Add a Stage Calendar section to the single-IPO report generator.
- Require analyst reports to include ticker-specific T0 subscription window, T1 allotment-result date, T2 grey-market date/window, and D1 listing date.
- Update the 06106 T0 report with its concrete stage dates.
- Document the requirement in the analyst skill, README, and rule change log.
Verification:
- Ran py_compile for scripts/generate_ipo_report.py.
- Generated a 06106 dry-run report and checked the stage calendar.
- Ran git diff --check.
Next useful context:
- For 06106, T0 is 2026-06-15 to 2026-06-18, T1/T2 is 2026-06-23, and D1 is 2026-06-24.
Request:
- Emphasize that the analyst model is for selling allocated IPO shares in T2 grey market or on D1, not for long-term holding.
Changes:
- Add explicit T2/D1 sell discipline to the analyst skill.
- Update ipo_score_v0 targets and holding policy so D1 sell return is primary and T2 is the intended extension when reliable grey-market data exists.
- Clarify that D5/D20/D60 are review labels only, not planned holding targets.
- Update the model report, single-ticker report generator, README, and the 06106 report language to reflect the short-exit horizon.
Verification:
- Rebuilt the model report with the same dataset timestamp and confirmed the analysis dataset did not change.
- Ran py_compile for build_analysis_dataset.py and generate_ipo_report.py.
- Generated a 06106 dry-run report showing T2/D1 exit discipline.
- Ran git diff --check.
Next useful context:
- T2 is still disabled in v0 until archivist approves a reliable grey-market data source; D1 remains the live modeled sell label.
Request:
- Let the analyst skill generate a Markdown report directly when a new IPO ticker is provided.
Changes:
- Add scripts/generate_ipo_report.py for stage-safe single-ticker reports from the v0 analysis dataset.
- Auto-select T1 reports when structured allotment demand exists and otherwise use T0 prospectus-stage reporting.
- Keep post-listing D1/D5/D20/D60 outcomes out of prediction reports while using historical buckets for calibration.
- Document the workflow in the analyst skill and README.
Verification:
- Ran py_compile for scripts/generate_ipo_report.py.
- Generated stdout dry-run reports for 06106 and 06658.
- Wrote temporary Markdown reports under /tmp for output-path validation.
- Ran git diff --check.
Next useful context:
- Before generating a report for a ticker absent from the analysis dataset, run archivist updates and rebuild scripts/build_analysis_dataset.py.
Request:
- Keep the HK IPO workflow skills inside the repo so they travel with the project.
- Use concise names while preserving clear HK IPO scope and repo-relative path rules.
Changes:
- Add .codex/skills/archivist for source archiving, SQLite fact updates, hashes, and CSV snapshots.
- Add .codex/skills/analyst for T0/T1/T2 IPO decisions, prediction cards, reviews, and rule-change recommendations.
- Add agents/openai.yaml metadata for both skills.
Verification:
- Checked staged changes include only .codex skill files.
- Searched .codex for machine-specific absolute path patterns; none found.
Next useful context:
- AGENTS.md remains untracked and was not included in this commit.