INDEX P/E VALUATION TERMINAL bottom-up cap-weighted harmonic P/E · target price engine
as of loading…
REFRESH re-reads the published data.json file only (cache-busted, no page reload). It does not re-pull from moomoo — a genuine re-pull must be run locally with the refresh pipeline, because moomoo OpenD listens on 127.0.0.1 and is not reachable from Cloudflare's edge. See REFRESH PIPELINE at the bottom of this page.

Data provenance & methodology

every figure on this page traces to a source below — audit before you trade it
loading…

Refresh pipeline

how to actually re-pull from moomoo (cannot be done from this page)

The REFRESH DATA button in the header only refetches the published data.json from this site's own origin. It re-reads a file that was written by a previous pipeline run; it does not contact moomoo, and it cannot make the numbers newer than the meta.generated_at_utc stamp shown in the header.

A genuine re-pull from moomoo must be run locally. moomoo OpenD listens on 127.0.0.1 (loopback only) and is NOT reachable from Cloudflare's edge. No edge function, worker or scheduled job in the cloud can reach OpenD. The pull runs on the machine where OpenD is running, and the resulting data.json is then published.

Run these two commands, in order, on the local machine with moomoo OpenD running:

1 · pull python refresh_pe_data.py
2 · publish npx wrangler pages deploy pe_dashboard --project-name index-pe-dashboard --branch main --commit-dirty=true

Step 1 writes pe_dashboard/data.json on the local machine. Step 2 uploads this directory (including that file) to Cloudflare Pages. Only after step 2 will the REFRESH button in the header see new numbers.