Alpha Library / Point-in-time Fundamentals / fund_ps_ttm_ind_neutral
fund_ps_ttm_ind_neutral
P/S TTM industry-neutral - inverse within-industry price-to-sales (daily market data)
Themes & universe
valueequity_cn1d
Formula
-\mathrm{zscore}_{x\mid\mathrm{industry}}(\mathrm{PS_{TTM}})
Definition
Notes
Nonpositive multiples are excluded rather than ranked as cheap. Industry-neutralized inverse trailing price-to-sales: each name is z-scored against its Shenwan level-1 industry peers instead of the whole cross-section (sector tag from tushare index_member_all SW2021 membership, point-in-time via in_date/out_date). This removes the industry confounding that dominates raw A-share PS — software and platform names carry structurally high margins and high PS while distributors and manufacturers are structurally low, so a raw low-PS screen is largely an industry bet. Low PS relative to industry peers scores high, and PS stays informative for loss-making names where earnings yield fails. A name with no industry label on a date stays NaN and is excluded from that date's cross-section; an industry group with fewer than two labelled names cannot form a within-group z-score and stays NaN. Keyed by trade_date, so PIT-safe by construction with no filing lag. Membership is point-in-time but the SW2021 taxonomy itself is retroactive — a name reclassified in 2021 carries its 2021 industry back through history. Lineage: industry-neutral variant of fund_ps_ttm (#1789 follow-up).
Run it
pip install vibe-trading-ai
vibe-trading alpha show fund_ps_ttm_ind_neutral
vibe-trading alpha bench --zoo fundamental --universe csi300 --period 2020-2025