Commit Graph

20 Commits

Author SHA1 Message Date
geometrybase 05b127d50a Refresh latest IPO candidates
Request:
Run the scheduled HK IPO analyst refresh as of 2026-06-23T23:00:03Z, refresh online archive facts first, rebuild the analysis dataset, write the latest Chinese broad candidate report, mirror it to reports/README.md, and preserve stage discipline.

Changes:
- Refreshed HKEX current-listing pages, current HKEX document searches, VBKR/Jieli T0.95 market heat, ipohk external history, and A/H quote evidence at the new as-of timestamp.
- Preserved unofficial subscription heat only in ipo_market_heat and kept official T1 demand fields sourced from HKEX allotment-result documents.
- Marked due or Hong Kong-time elapsed T2 grey-market source-strategy gaps for 01392, 02335, 02667, 06067, 06106, 06132, and 06675.
- Backfilled 06675 stock_short_name from archived Yahoo shortName evidence and rebuilt analysis_model_v0_dataset.csv.
- Updated reports/2026-06-23_latest_ipo_candidates_analysis.md and mirrored the same content to reports/README.md with actionable ranking, fundamentals, unresolved-D1 risk/reward coverage, closed/waiting names, A/H overlay, recent 30-day review, guardrails, and sources.

Verification:
- git diff --check
- Rebuilt analysis dataset for 2026-06-23T23:00:03Z
- Python check that reports/README.md matches the dated report and required current/recent tickers are present
- Python check that 23:00Z heat has 8 T0_95_final_heat rows and active heat tickers have no official ipo_demand rows
- Python check that 02335 and 06106 official T1 fields match HKEX allotment results
- Python check that 77 source refs archived at 2026-06-23T23:00:03Z use repo-relative paths, files exist, and hashes match
- Python check that T2 data gaps are marked for 01392, 02335, 02667, 06067, 06106, 06132, and 06675

Next useful context:
- VBKR/Jieli heat values for the 8 still-actionable names were unchanged from 15:00Z but now have a fresh 23:00Z observed_at.
- 02335 and 06106 have official T1 demand, but D1 had not opened by the report as-of time; T2 remains a source-strategy data_gap.
- 00901 Yahoo D1 fetch still returns 404; ipohk remains only a third-party cross-check.
2026-06-23 23:12:59 +00:00
geometrybase 5b9835c289 Refresh latest IPO candidates
Request:
Run the scheduled HK IPO analyst refresh as of 2026-06-23T15:00:19Z, refresh online archive facts first, rebuild the analysis dataset, write the latest Chinese broad candidate report, mirror it to reports/README.md, and preserve stage discipline.

Changes:
- Refreshed HKEX current-listing pages, VBKR/Jieli T0.95 market heat, ipohk external history, A/H quote evidence, and current HKEX document searches.
- Archived official HKEX allotment-result PDFs and extracted text for 02335 and 06106; parsed official T1 demand into ipo_demand without copying market heat into official fields.
- Rebuilt analysis_model_v0_dataset.csv and refreshed sync/source snapshots.
- Updated reports/2026-06-23_latest_ipo_candidates_analysis.md and mirrored the same content to reports/README.md, including current ranking, fundamentals, unresolved-D1 risk/reward table, closed/waiting names, 30-day review, guardrails, and sources.

Verification:
- git diff --check
- Rebuilt analysis dataset for 2026-06-23T15:00:19Z
- Python check that reports/README.md matches the dated report and required new facts are present
- Python check that 15:00Z heat has 8 ipo_market_heat rows and current actionable names have no official ipo_demand rows
- Python check that 02335 and 06106 official T1 fields match HKEX allotment results
- Python check that 77 source refs archived at 2026-06-23T15:00:19Z use repo-relative paths, files exist, and hashes match

Next useful context:
- 02335 and 06106 now have official T1 demand, but D1/T2 remain data_gap until listing-day evidence is archived.
- 00901 Yahoo D1 fetch still returns 404; ipohk remains only a third-party cross-check.
2026-06-23 15:13:18 +00:00
geometrybase 406a81a196 Refresh latest IPO candidate report
Request:
Update the latest HK IPO candidate report with fresh market heat and enforce the new Chinese-name report format.

Changes:
- Archived the 2026-06-23 10:59Z VBKR/Jieli heat snapshot and HKEX Chinese current listings page.
- Backfilled current IPO Chinese names from the HKEX Chinese page, leaving 06228 as data_gap because the official Chinese page lists only the foreign issuer name.
- Refreshed A-share and HKD/CNY raw quote JSON for the A/H overlay.
- Rebuilt analysis snapshots and refreshed the 2026-06-23 latest report plus reports/README.md with dedicated Chinese-name columns.

Verification:
- git diff --check
- Confirmed reports/README.md and reports/2026-06-23_latest_ipo_candidates_analysis.md are identical.
- Checked the report contains the 2026-06-23T10:59:36Z timestamp and latest heat source path.
- Checked old English company-name labels are absent from the refreshed reports.

Next useful context:
- 06228 remains a Chinese-name data_gap unless an official Chinese issuer name source appears.
2026-06-23 11:09:58 +00:00
geometrybase 5f94bbfde9 Refresh latest HK IPO report with A/H and T2 overlays
Request:
- Regenerate the latest HK IPO candidate report.
- Include current IPO candidate refresh, updated subscription heat, A/H dual-listed pricing analysis for 03661 and 01688, and T2 grey-market review context.

Changes:
- Refreshed HKEX current-listing, VBKR/Jieli T0.95 heat, ipohk external history, sync-state, and analysis-model snapshots as of 2026-06-23T08:53:26Z.
- Archived raw Yahoo chart evidence for 300661.SZ, 002600.SZ, and HKD/CNY so the A/H discount overlay has a reproducible local source.
- Regenerated reports/2026-06-23_latest_ipo_candidates_analysis.md and mirrored it to reports/README.md.
- Added the generated model v0 report from the rebuilt analysis dataset.
- Marked T2 grey-market evidence quality explicitly: ipohk grey-market returns are Tier 3 historical summaries, while newer June IPOs remain data_gap.

Verification:
- Confirmed reports/README.md matches the dated latest report with cmp.
- Ran git diff --check and git diff --cached --check.
- Verified all repo-relative paths referenced by the latest report exist.
- Verified source_refs paths are repo-relative, existing, and hash-matching.
- Recomputed A/H overlay values from archived raw JSON: 03661 discount about 46.2%, 01688 discount about 45.1%.

Next useful context:
- The 2026-06-23T08:53:26Z heat snapshot leaves the same 8 currently actionable candidates as the 07:00 refresh, with small heat updates.
- 02335 and 06106 still have no official T1 demand rows in the project archive.
- A/H discounts are valuation anchors, not direct arbitrage, because the A and H shares are not fungible.
2026-06-23 09:02:48 +00:00
geometrybase 0e91879c4d d 2026-06-22 15:43:01 +00:00
geometrybase 8ef1e78d58 Refresh IPO candidates with latest heat
Request:
- Update the current HK IPO candidates after subscription multiples changed again.
- Refresh the candidate ranking and defensive risk/reward view.

Changes:
- Archived the 2026-06-22T13:57:38Z VBKR/Jieli T0.95 market-heat snapshot.
- Re-archived the HKEX current new-listing page and rebuilt snapshots/model dataset.
- Updated the June 22 candidates report with the latest heat multiples, ranking, execution guidance, and defensive score table.
- Refreshed the model report analysis timestamp.

Verification:
- Ran git diff --check and git diff --cached --check.
- Confirmed SQLite PRAGMA integrity_check = ok.
- Parsed changed CSV snapshots and confirmed 13 latest T0_95_final_heat rows.
- Checked the current candidate ranking against data/snapshots/analysis_model_v0_dataset.csv.
2026-06-22 14:02:46 +00:00
geometrybase e746cae035 Refresh HK IPO heat ranking
Request:
- Update the latest Hong Kong IPO candidate list and rescore it based on subscription multiples.

Changes:
- Archived the 2026-06-22 HKEX Main Board New Listing Information page, adding 02697, 03952, 06715, and 06915 to the current candidate set.
- Archived and extracted the four new prospectuses, refreshed current HKEX document facts, and rebuilt the v0 analysis dataset to 311 rows.
- Archived a 2026-06-22T08:55:00Z VBKR/Jieli market-heat snapshot and wrote only still-actionable T0.95 rows to avoid look-ahead leakage for already-closed IPOs.
- Improved prospectus date parsing for split weekday/month text, glued noon/commence phrases, and current new-listing expected listing-date updates.
- Added a Chinese 2026-06-22 latest IPO report ranking candidates after the subscription-multiple overlay.

Verification:
- Ran py_compile for archive_hkex_documents.py, archive_t0_5_market_heat.py, archive_hkex_current_new_listings.py, and build_analysis_dataset.py.
- Re-ran HKEX current-page seeding, document archiving, market-heat archiving, and analysis dataset build as of 2026-06-22T08:55:00Z.
- Ran git diff --check and git diff --cached --check.
- Ran SQLite integrity_check and foreign_key_check.
- Verified source_refs paths, file existence, and SHA-256 hashes.

Next useful context:
- 01956 is the only current candidate with both strong T0 structure and >100x actionable heat in this snapshot.
- Recheck 03952 and 06715 near the 2026-06-25 cutoff; their structure is strong but 2026-06-22 heat is below 10x.
- Official T1 allotment facts for 06067 and 06132 were still unavailable at this archive timestamp.
2026-06-22 09:03:50 +00:00
geometrybase e346690bb7 Archive current HKEX IPO candidates
Request:
- Use the analyst workflow to analyze the latest Hong Kong IPOs, connect their source data, and produce a current report.

Changes:
- Added a current HKEX New Listing Information page seeder that archives the official page, seeds visible tickers, and records source_refs.
- Archived current HKEX prospectus and allotment-result sources for the 16 visible Main Board candidates and extracted their text.
- Extended prospectus parsing for offer price, derived gross proceeds, HDR offerings, and listing-date text extracted with split characters.
- Rebuilt the analysis dataset and added a Chinese 2026-06-21 latest IPO report separating live T0 watchlist names from past-cutoff T1/D1 candidates.

Verification:
- Ran py_compile for update_recent_ipo_list.py, archive_hkex_current_new_listings.py, archive_hkex_documents.py, and build_analysis_dataset.py.
- Re-ran HKEX current page seeding, document archiving, and analysis dataset build as of 2026-06-21T08:44:59Z.
- Ran git diff --check and git diff --cached --check.
- Ran SQLite integrity_check and foreign_key_check.
- Verified source_refs paths, file existence, SHA-256 hashes, and report source paths.

Next useful context:
- Capture T0.95 market heat before the 2026-06-23 and 2026-06-24 order cutoffs before converting the new watchlist into execution calls.
- Treat 02667 as a stale/special HKEX page item until a fresh June timetable or official result appears.
2026-06-21 09:05:13 +00:00
geometrybase e0c194e115 Update June 18 IPO analysis
Request:
- Refresh today's HK IPO analyst view for the current candidate set.

Changes:
- Refreshed the 2026 HKEX new-listing report archive and synchronized source hashes across 2026 report-backed rows.
- Re-ran HKEX document archiving for 01392, 06067, 06132, 02335, and 06106; no official T1 allotment facts were available at 2026-06-18T08:16:33Z.
- Rebuilt the v0 analysis dataset and model report as of 2026-06-18T08:16:33Z.
- Added a Chinese 2026-06-18 cross-candidate analysis update that treats 06106/02335 as past standard subscription cutoff, flags 01392 for a post-23:00 HKT T1 refresh, and lists newly visible HKEX page tickers as pending archivist work.

Verification:
- Ran scripts/update_recent_ipo_list.py for 2026-01-01 through 2026-06-18.
- Ran scripts/archive_hkex_documents.py for 01392,06067,06132,02335,06106.
- Ran scripts/build_analysis_dataset.py as of 2026-06-18T08:16:33Z.
- Ran git diff --check and git diff --cached --check.
- Ran py_compile for the touched workflow scripts.
- Ran SQLite integrity_check and foreign_key_check.
- Verified durable report paths exist and source_refs have no missing paths or hash mismatches.

Next useful context:
- Re-run archivist after 2026-06-18T15:00:00Z to capture 01392 allotment results if published.
- Add a seed/archive path for current HKEX New Listing Information page candidates before scoring 02672, 01191, 09637, 09630, 06228, 03661, 01956, 02272, 01688, and 02667.
2026-06-18 08:24:00 +00:00
geometrybase fb7bf3af7d Analyze latest HK IPO candidates
Request:
- Use the project analyst workflow to analyze the latest upcoming Hong Kong IPO candidates.

Changes:
- Refreshed recent HK IPO target coverage through 2026-06-17 and archived current HKEX source updates.
- Archived 06675 allotment results and D1 Yahoo price performance for boundary-case review.
- Archived a 2026-06-17 T0.5 VBKR/Jieli market-heat snapshot for still-actionable 02335 and 06106.
- Rebuilt the v0 analysis dataset and snapshots at 2026-06-17T08:20:00Z.
- Added a Chinese horizontal analyst report ranking 06106, 02335, 06132, 06067, 01392, with 06675 separated as a T1/D1 review sample.

Verification:
- Ran SQLite PRAGMA integrity_check and foreign_key_check.
- Ran git diff --check and git diff --cached --check.
- Confirmed report source paths exist.

Next useful context:
- 06106 is the top still-actionable T0.5 candidate at this as-of time.
- 02335 needs another pre-deadline heat sample before a stronger call.
- 01392, 06067, and 06132 are now mainly waiting for T1 official allotment results.
2026-06-17 08:27:35 +00:00
geometrybase 19832ac5af Add T0.95 late-order heat stage
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.
2026-06-15 16:28:26 +00:00
geometrybase 943eab27cb Add external IPO history to heat model
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.
2026-06-15 16:06:56 +00:00
geometrybase a2ec016769 Add selected T0 horizontal IPO report
Request:
- Combine the currently selected T0 IPO reports into one cross-sectional analysis report.

Changes:
- Add a Chinese horizontal T0 report comparing 01392, 02335, 06067, 06106, and 06132.
- Rank the selected IPOs by the current T0 model and short-exit discipline focused on T2/D1 selling.
- Backfill 02335's Chinese company name from its Chinese HKEX prospectus and archive the source PDF plus extracted text.
- Refresh the v0 analysis dataset and sync-state snapshots at 2026-06-15T18:20:00Z.

Verification:
- .venv/bin/python -m py_compile scripts/build_analysis_dataset.py scripts/generate_ipo_report.py scripts/extract_pdf_text.py scripts/update_sync_state.py
- Python sqlite3 PRAGMA integrity_check returned ok and foreign_key_check returned zero rows.
- Confirmed 02335 Chinese source_ref, extracted text manifest row, and selected horizontal report content.
- git diff --cached --check

Next useful context:
- Untracked PDF exports of individual reports and the horizontal report were left out of this focused commit.
2026-06-15 15:17:06 +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 fcb795b583 Add 02335 T0 analyst report
Request:
- Generate an analyst report for HK IPO ticker 02335.

Changes:
- Archived the official HKEXnews 02335 prospectus PDF and extracted text under project-relative data paths.
- Seeded 02335 T0 prospectus facts, source references, sync state, and analysis snapshots.
- Generated reports/2026-06-15_02335_T0_prospectus_analysis.md in Simplified Chinese with concrete T0/T1/T2/D1 dates and short-exit T2/D1 discipline.
- Made PDF text extraction tolerant of invalid Unicode surrogate characters emitted by pypdf.

Verification:
- Compiled archive_hkex_documents.py, generate_ipo_report.py, build_analysis_dataset.py, extract_pdf_text.py, and update_sync_state.py.
- Ran SQLite integrity_check and foreign_key_check.
- Verified the archived 02335 PDF hash, extracted-text manifest row, and analysis dataset row.
- Ran git diff --check.

Next useful context:
- 02335 is currently T0_prospectus; T1_allotment is pending for 2026-06-23.
2026-06-15 15:07:44 +00:00
geometrybase 42c18131e8 Add 06067 T0 analyst report
Request:
- Generate an analyst report for HK IPO ticker 06067.

Changes:
- Archived the official HKEXnews 06067 prospectus PDF and extracted text under project-relative data paths.
- Seeded 06067 T0 prospectus facts, source references, sync state, and analysis snapshots.
- Generated reports/2026-06-15_06067_T0_prospectus_analysis.md in Simplified Chinese with concrete T0/T1/T2/D1 dates and short-exit T2/D1 discipline.
- Updated the HKEX document archiver so over-allotment shares are only recorded when the prospectus supports them, with explicit no-option cases stored as zero.

Verification:
- Compiled archive_hkex_documents.py, generate_ipo_report.py, build_analysis_dataset.py, extract_pdf_text.py, and update_sync_state.py.
- Ran SQLite integrity_check and foreign_key_check.
- Verified the archived 06067 PDF hash, extracted-text manifest row, and analysis dataset row.
- Ran git diff --check.

Next useful context:
- 06067 is currently T0_prospectus; T1_allotment is pending for 2026-06-22.
2026-06-15 15:03:07 +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 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 58ad869f84 Refresh IPO analysis model calibration
Request:
- Re-analyze the IPO model using the updated historical archive after T1 demand backfill.

Changes:
- Regenerate the v0 analysis dataset from the current SQLite archive.
- Refresh the v0 calibration report with expanded T1 coverage and new empirical bucket rates.
- Update the report template to show pending T1 rows and field-level blanks.
- Clarify v0 limitations and record why the score formula stays unchanged for this refresh.

Verification:
- Ran scripts/build_analysis_dataset.py against data/hk_ipo.sqlite.
- Ran py_compile for scripts/build_analysis_dataset.py.
- Checked dataset row count, T1 demand coverage, source-only T1 gaps, and repo-relative paths.
- Ran git diff --check.

Next useful context:
- T1 structured coverage is now 291 rows, with 06106 and 06675 still pending_not_due.
- The high-conviction T1 bucket remains differentiated, but middle and low buckets are still not monotonic enough for a v1 rule change.
2026-06-15 14:05:34 +00:00
geometrybase 48b89552fe Add IPO analysis model baseline
Request:
- Use the analyst skill to digest downloaded IPO archive data and start building an analysis model.

Changes:
- Add ipo_score_v0 as the first transparent stage-safe scoring rule set.
- Add build_analysis_dataset.py to derive model features, scores, decision bands, and empirical D1 calibration from SQLite.
- Generate analysis_model_v0_dataset.csv with 293 scored IPO rows and archived source paths.
- Add a model calibration report documenting coverage, T0/T1 bucket performance, usage, and known gaps.
- Record the initial model entry in the rule change log and document the command in README.

Verification:
- Ran py_compile for scripts/build_analysis_dataset.py.
- Regenerated the analysis dataset and report with as-of 2026-06-15T13:00:00Z.
- Checked CSV row count, source path coverage, and repo-relative path hygiene.
- Ran git diff --cached --check.

Next useful context:
- v0 should be treated as a transparent baseline, with T1 high-score calibration strongest and middle buckets still non-monotonic.
- T2 is excluded until a reliable grey-market source is approved.
2026-06-15 12:49:48 +00:00