Commit Graph

9 Commits

Author SHA1 Message Date
geometrybase 7cbdd533b0 Add A/H share-class mapping workflow
Request:
- Add a repeatable mechanism so HK IPO reports detect issuers that already have Mainland A shares.
- Include a third internet/official-exchange cross-check layer beyond structured history and prospectus scans.

Changes:
- Add listed_share_classes schema support for same-issuer A-share mappings and evidence links.
- Add scripts/archive_a_share_mappings.py to scan prospectus extracted text, reject sponsor/portfolio/cornerstone false positives, archive optional official web evidence and A-share/FX quote evidence, and export snapshots on write.
- Surface a_share_* fields in the analysis dataset and single-ticker report output.
- Update hk-ipo analyst/archivist skill rules and scheduled refresh prompt to require the three-layer A/H mapping check.

Verification:
- python3 -m py_compile scripts/archive_a_share_mappings.py scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- .venv/bin/python scripts/archive_a_share_mappings.py --as-of 2026-06-24T00:00:00Z --tickers 00668,01688,03661,09630 --dry-run
- .venv/bin/python scripts/build_analysis_dataset.py --db /tmp/hk_ipo_ah_dataset_test.sqlite --dataset /tmp/hk_ipo_ah_dataset_test.csv --report /tmp/hk_ipo_ah_model_test.md --as-of 2026-06-24T00:00:00Z
- .venv/bin/python scripts/generate_ipo_report.py 09630 --dataset /tmp/hk_ipo_ah_dataset_test.csv --stdout --as-of 2026-06-24T00:00:00Z
- git diff --check

Next useful context:
- Dry-run detected 00668->300866.SZ, 01688->002600.SZ, 03661->300661.SZ, and 09630->688630.SH.
- A false positive 01688->300476.SZ from a cornerstone investor parent was rejected by the issuer-context filter.
2026-06-24 07:21:21 +00:00
geometrybase aa31244f0a Prefer stock display names in IPO reports
Request:
Rename the report display-name rule from 中文名 to 股票名, prefer Chinese stock-style short names, and allow sourced English stock names such as MERDEKAGOLD-DRS when no Chinese short name exists.

Changes:
- Update the hk-ipo-analyst skill to require a 股票名 column and document English stock-name fallback.
- Derive missing stock_short_name values from archived market-heat source-page stock names in the analysis dataset.
- Preserve source-page stock names into ipo_master when future market-heat archives encounter blank stock_short_name values.
- Rename the single-ticker report display helper to stock_display_name.
- Refresh the latest report and README so 06228 displays as MERDEKAGOLD-DRS and tables use 股票名.

Verification:
- python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst
- git diff --check
- .venv/bin/python -m py_compile scripts/archive_t0_5_market_heat.py scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- Rebuilt analysis_model_v0_dataset.csv for 2026-06-23T10:59:36Z
- Verified 06228 stock_short_name is MERDEKAGOLD-DRS and latest README matches the dated report
2026-06-23 11:24:50 +00:00
geometrybase 2b08ad8689 Use Chinese short names in IPO reports
Request:
Prefer stock-app-style Chinese display names in IPO report tables, for example 圣邦股份 instead of the full legal issuer name.

Changes:
- Update the hk-ipo-analyst report naming rule to prefer sourced stock short names in 中文名 columns.
- Export stock_short_name into the analysis model dataset.
- Make generated single-ticker reports use the short Chinese name as the title/display label while retaining legal names for disambiguation.
- Refresh the latest dated report and reports README to use Chinese short names consistently.

Verification:
- git diff --check
- .venv/bin/python -m py_compile scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- CSV validation for stock_short_name on 03661, 01688, and 01191
- Confirmed latest report and README contain no matched full legal issuer names for the refreshed shortlist
2026-06-23 11:15:12 +00:00
geometrybase 797bbde201 Prefer Chinese company names in IPO reports
Request:
- Update the selected analyst reports so stock/company names include Chinese names and use Chinese names first.

Changes:
- Updated the selected T0 reports for 01392, 06067, 06106, and 06132 to show Chinese company names in the title and summary, with English names in parentheses.
- Added company_name_zh to the analyst dataset so report generation has access to Chinese names.
- Updated the report generator to prefer Chinese company names and fall back to English names only when Chinese names are unavailable.
- Filled Chinese company names for the selected tickers in ipo_master and refreshed snapshots.

Verification:
- Compiled build_analysis_dataset.py and generate_ipo_report.py.
- Ran generator dry-runs for 06132 and 01392 to confirm Chinese-first output.
- Ran SQLite integrity_check and foreign_key_check.
- Ran git diff --check.

Next useful context:
- Future generated analyst reports now use company_name_zh first when available.
2026-06-15 15:11:15 +00:00
geometrybase 77b405e4f3 Add T0 analyst reports for active IPOs
Request:
- Analyze HK IPO ticker 01392 with the analyst skill.
- Preserve the in-flight 06132 archive/report work already created for the prior request.

Changes:
- Archived official HKEX prospectus PDFs and extracted text for 01392 and 06132.
- Seeded structured T0 facts into the SQLite archive and refreshed CSV snapshots and sync state.
- Rebuilt the v0 analysis dataset and model calibration report.
- Generated Simplified Chinese T0 prospectus-stage analyst reports for 01392 and 06132.
- Adjusted report stage calendars so T2 uses the previous business day before D1 when listing is separated from allocation by a weekend.

Verification:
- Compiled modified Python scripts with in-memory syntax checks.
- Ran SQLite quick_check and foreign_key_check.
- Confirmed DB row counts match CSV snapshots for key tables.
- Verified 01392/06132 source paths are repo-relative, raw files exist, hashes match, and PDF text manifest rows are ok.
- Ran git diff --cached --check.

Next useful context:
- 01392 T1 is due on 2026-06-18; rerun analyst after allotment results are archived.
- 06132 T1 is due on 2026-06-22; rerun analyst after allotment results are archived.
2026-06-15 14:51:44 +00:00
geometrybase 907e30d9da Use Chinese for analyst reports
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.
2026-06-15 14:37:46 +00:00
geometrybase 07d7a0064a Add concrete IPO stage dates to reports
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.
2026-06-15 14:24:06 +00:00
geometrybase 29ed22e476 Clarify IPO short-exit strategy horizon
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.
2026-06-15 14:20:56 +00:00
geometrybase 1227f2c7c4 Add single IPO analyst report generator
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.
2026-06-15 14:11:18 +00:00