Alpha Library  /  Point-in-time Fundamentals  /  fund_pb_ind_neutral

fund_pb_ind_neutral

P/B industry-neutral - inverse within-industry price-to-book (daily market data)

Themes & universe

valueequity_cn1d

Formula

-\mathrm{zscore}_{x\mid\mathrm{industry}}(\mathrm{PB})

Definition

id
fund_pb_ind_neutral
zoo
fundamental
module_path
src.factors.zoo.fundamental.pb_ind_neutral
decay_horizon
252
min_warmup_bars
1
requires_sector
True
columns_required
val:pb

Notes

Nonpositive multiples are excluded rather than ranked as cheap. Industry-neutralized inverse price-to-book: 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 PB — banks and cyclicals are structurally cheap on book value while technology names are structurally expensive, so a raw low-PB screen is largely an industry bet. Low PB relative to industry peers scores high. 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_pb (#1789 follow-up).

Run it

pip install vibe-trading-ai
vibe-trading alpha show fund_pb_ind_neutral
vibe-trading alpha bench --zoo fundamental --universe csi300 --period 2020-2025