Learn🧭 User JourneyMulti-Factor Screener: Compose Your Own Filter Recipe
🧭 User Journey6 min read

Multi-Factor Screener: Compose Your Own Filter Recipe

5 filter dimensions (financial health / relative valuation / momentum / volatility / market cap) compose freely. Run to get a filtered stock list; click any factor for threshold details.

💡

TL;DR: The Multi-Factor Screener (/vip/screener) lets you compose conditions across 5 dimensions — financial health, relative valuation, momentum, volatility, market cap — and run to get a filtered stock list. Each factor expands to show its threshold and calculation. The tool for "compose your own filter recipe."

Concepts

Why Use a Screener?

If you already have a concrete idea — "I want PE < 15, ROE > 15%, low-vol mid caps" — manually checking 2,000 stocks is impossible. The screener automates that filtering.

Screener vs Leaderboard:

  • Leaderboard: A fixed-sort list (e.g. "top 100 by foreign net buy")
  • Screener: You set conditions, the system filters out the rest

The 5 Filter Dimensions

DimensionMeasuresCommon Factors
Financial HealthIs the company healthy?Altman Z (bankruptcy), Piotroski F (composite), gross margin, ROE
Relative ValuationIs the price reasonable?P/E percentile, P/B percentile, EV/EBITDA, dividend yield
MomentumShort-/mid-term trend strength60-day momentum, RS (relative strength), distance to 52-week high
VolatilityRisk levelAnnualized vol, Beta, max drawdown
Market CapSize categoryAbsolute market cap, liquidity (20-day avg volume)

Absolute Value vs Percentile?

Both available, situational:

  • Absolute (e.g. "P/E < 15"): Intuitive but ignores sector differences — financials rarely above 15, tech rarely below 15. One threshold across sectors creates bias
  • Percentile (e.g. "P/E below historical P30"): Auto-adjusts for sector and stock-specific history, fairer, but needs ≥5 years history to stabilize

Beginners should default to percentile; veterans mix.

Hands-on: Reading It on CTSstock

Open /vip/screener. Three areas:

  • Left panel: 5 dimensions, each with selectable factors and conditions
  • Center: Filtered stock list with key metrics
  • Top-right Run button: Executes the filter (data is precomputed; near-instant)

4 Strategy Examples

Strategy 1: Value (cheap good companies)

Financial Health: Altman Z > 2.99 (safe zone)
Financial Health: Piotroski F >= 7 (high composite)
Relative Valuation: P/E historical P30 or below (cheap)
Relative Valuation: Dividend yield > 3% (cash return)

Expected: financials and traditional industries; few growth stocks. Suits long-term hold.

Strategy 2: Momentum Growth (riding strong uptrends)

Momentum: 60-day momentum > +20%
Momentum: RS > 80
Financial Health: Revenue YoY > 15%
Volatility: Annualized vol < 40% (avoid wild names)

Expected: small/mid-cap growth names that just broke out. Pair with strict stop-loss (use the alert system's "Sharpe < 0" as red flag).

Strategy 3: Low-Vol Defensive (avoid wild swings)

Volatility: Annualized vol < 25%
Volatility: Max drawdown > -20% (no >20% decline in past year)
Financial Health: ROE > 10%
Market Cap: > 50B NTD

Expected: large-cap blue chips, sector leaders. Suits conservative allocation.

Strategy 4: Oversold Bounce (short-term contrarian)

Momentum: 60-day momentum < -25% (sharp decline)
Financial Health: Altman Z > 2.99 (no bankruptcy risk)
Relative Valuation: P/B historical P20 or below (cheap on book)
Volatility: 20-day avg volume > 10M shares (liquid enough to exit)

Expected: fundamentally sound stocks oversold by mistake. Must verify the alert system shows few red flags.

Reviewing Filter Results

After running, don't take the list at face value. Recommended flow:

  1. Check the count. 100+ means conditions too loose; <5 means too strict
  2. Click into any stock's Insights tab to see overall 4-engine state
  3. Check alerts for excessive red flags
  4. Check institutional flows for recent buying/selling
  5. Only after passing all 4 should the stock enter your watchlist

FAQ

Q: More factors = better?

No. Too many factors drives the result count to zero (over-fitting). Use 4–6 factors per filter, spread across at least 3 dimensions.

Q: My results don't match my intuition. Why?

Common causes:

  1. Wrong dimension assignment — e.g. "ROE > 15%" set under valuation (it belongs to financial health)
  2. Percentile vs absolute confusion — "P/E < 15" and "P/E P30 or below" yield very different lists
  3. Insufficient history — stocks listed less than 1 year can't compute the 252-day percentile and get excluded

Q: Can I export results?

Not currently in the UI. For now, screenshot or manually copy. CSV export is on the roadmap.

Q: Why do some listed stocks never appear?

Two filters are on by default:

  • Liquidity filter: 20-day avg volume < 100k shares = excluded (too illiquid to exit)
  • New listing filter: Listed < 1 year = excluded (insufficient history for percentile-based factors)

Toggle them off in the panel to see the complete universe.


Done reading? Try it hands-on

Practice with CTSstock tools to deepen your understanding

Open multi-factor screener