22 ready-made A-share screening strategies
Do not want to write screening conditions yourself? The API ships 22 ready-made strategies (called `preset` in the interface): low PE, high dividend, high ROE, growth, main-capital inflow and more — tweak and run. This guide walks them by category: what each screens, who it suits, and what the output looks like — with live results from five of them.
1. Ready-made strategy vs writing your own expression
import requests
BASE = "https://api.ashareapi.com/v1"
H = {"Authorization": "Bearer ct-your-key"}
r = requests.get(f"{BASE}/screen",
params={"preset": "LowPE", "orderby": "PE_TTM", "limit": 5},
headers=H, timeout=30)
body = r.json()
print(body["ok"], body["elapsed_ms"])
for row in body["structured"]:
print(row)| Use | When | Example |
|---|---|---|
| `preset` | Run a standard answer first, or avoid tuning factors | preset=LowPE |
| `expr` | You have your own factor logic and need precise control | expr=intersect([...]) |
Strategy names can be combined with parameters: `preset=LowPE --limit 20 --orderby PE_TTM --asc`. Names (the `preset` parameter) are case- and underscore-insensitive (`low_pe` = `LowPE` = `Low-PE`).
2. The 22 ready-made strategies in four groups
Grouped by "what the investor is looking for" — easier to remember than alphabetically:
2.1 Valuation (finding cheap names, 7)
| Strategy | Screens for | Suits |
|---|---|---|
| LowPE | Low price/earnings | Value screening start |
| LowPB | Low price/book | Asset-heavy sectors (banks / property / steel) |
| ValuationPercentile | Valuation at historical lows | "Is it cheaper than the past?" |
| HighDividend | High dividend yield | Income strategies |
| HighDividendLowValuation | High yield + low valuation | Dividend-value combo (most used) |
| PEG | PEG (PE / earnings growth) | Growth valuation sanity |
| SmallCapValue | Small cap + value | Small-cap value hunting |
2.2 Profitability quality (finding real earners, 6)
| Strategy | Screens for | Suits |
|---|---|---|
| HighROE | High return on equity | Capital-efficient companies |
| HighGrowth | High growth (revenue / profit) | Growth screens |
| PositiveCashFlow | Positive operating cash flow | Exclude paper profits |
| LowDebt | Low debt | Conservative, anti-leverage |
| WhiteHorseGrowth | Large-cap growth | Steady growth |
| Turnaround | Distressed turnaround | Speculative — needs extra verification |
2.3 Technical (3)
| Strategy | Screens for | Suits |
|---|---|---|
| KDJOversold | KDJ oversold | Technical bottom signals |
| RSIOversold | RSI oversold | Same idea, different indicator |
| NineTurnGreen9 | DeMark 9 structure | Pattern-based selection |
2.4 Money flow and institutions (5)
| Strategy | Screens for | Suits |
|---|---|---|
| MainInflow | Main-capital inflow | Follow main funds (daily basis) |
| SustainedInflow | Sustained main-capital inflow | Steadier (multi-day basis) |
| HighShortRatio | High short ratio | A risk/anomaly signal, NOT bullish |
| HighRating | High analyst rating | Sell-side consensus |
| TargetPriceUpside | Upside to target price | Target vs current price |
3. Live results: what five strategies return (2026-09-29)
All below are real live responses (`limit=5`).
3.1 LowPE
| code | name | PE_TTM | PE_Fwd | PB | ClosePrice |
|---|---|---|---|---|---|
| sz000656 | Jinke Property | 0.36 | 356.56 | 3.17 | 1.25 |
| sh600841 | Dongli Xinke | 2.41 | 49.32 | 1.21 | 5.65 |
| sz002582 | Haoxiangni | 2.56 | 2.80 | 0.93 | 9.31 |
| sh600015 | Huaxia Bank | 3.94 | 5.29 | 0.31 | 6.22 |
Note: Jinke Property PE_TTM=0.36 is an extreme value needing a health check (its PE_Fwd is 356.56 — nearly 1000x apart in the same table). Being screened does not mean it is worth buying — see "Factor screening basics", sections 4-5.
3.2 HighDividendLowValuation
| code | name | Yield(%) | PE_TTM | PB | MktCap(100m) |
|---|---|---|---|---|---|
| sh603165 | Rongsheng Env. | 15.27 | 13.81 | 1.82 | 41.31 |
| sz002572 | Suofeiya | 10.47 | 11.43 | 1.10 | 73.58 |
| sh601717 | Zhongchuang | 9.59 | 6.88 | 0.98 | 232.64 |
| sz002867 | Zhou Dasheng | 8.96 | 11.37 | 1.75 | 109.09 |
A combination of >10% yield and <15x PE is relatively rare — which is why the double-low screen attracts attention.
3.3 HighROE
| code | name | ROEWeighted(%) | ClosePrice | ChangePCT |
|---|---|---|---|---|
| sz001309 | Demingli | 95.11 | 370.74 | -0.15 |
| sz000889 | Zhongjia Bochuang | 91.81 | 3.70 | 1.93 |
| sz000701 | Xiamen Xinda | 85.27 | 5.14 | -0.58 |
| sh688825 | Changxin Tech | 81.06 | 54.77 | 1.80 |
Note: ROE above 80% is an extreme value, usually paired with high leverage or non-recurring items — always check `ROECut` and `DebtEquityRatio`.
3.4 PEG
| code | name | PE_TTM | Profit YoY(%) | MktCap(100m) |
|---|---|---|---|---|
| sz300456 | Sai Micro | 6.21 | 415612.1246 | 259.35 |
| sz301308 | Longsys | 11.91 | 71528.661 | 1427.93 |
| sh688308 | Oke Precision | 26.88 | 47734.2439 | 127.36 |
| sh600345 | Changjiang Comm. | 23.05 | 8833.106 | 154.59 |
Watch out here: profit YoY of 415,612% or 71,528% means the base was near zero last year, so growth loses meaning. Always look at the absolute profit alongside PEG.
3.5 HighDividend
A live `preset=HighDividend --limit 10` returned top yields around 13-14% (e.g. 14.30% / 13.29% / 13.19%).
Note: yield = dividend per share / price, so a falling price inflates yield. High yield is not automatically good — check earnings and cash flow.
4. Three cautions
- A strategy is a starting point, not a conclusion — it narrows 5,000 names to dozens; judgement still applies (no buy/sell advice here)
- Extremes require a health check — all four strategies above returned extremes (PE 0.36 / ROE 95% / growth 415,612%); see "Factor screening basics"
- Mixing technical and fundamental strategies needs care — one reads price patterns, the other financials; combined they may cancel out
5. Parameter reference
| Parameter | Purpose | Example |
|---|---|---|
| `preset` | Select a strategy | preset=LowPE |
| `limit` | Rows returned | limit=20 |
| `orderby` | Sort field | orderby=ROETTM |
| `desc` | Descending (default ascending) | desc=1 |
| `date` | Factor values on a past date (backtest) | date=2026-08-01 |
| `market` | Market: hs / hk / us | market=hs |
| `universe` | Restrict the universe | universe=... |
`date` is the backtest key: pass a historical date to screen with that day factor values.
FAQ
No. low_pe / LowPE / Low-PE are equivalent. An invalid name returns the available strategy list.
Sorting by a single factor naturally surfaces extremes (the lowest PE often belongs to a company with distorted profit). This is inherent to factor screening, not an API fault — hence the mandatory health check.
No. Write an equivalent expression with intersect, or run them separately and filter locally.
No. It screens for high short ratios — a risk/anomaly signal. Be clear about your logic before using it.
Last updated: 2026-09-29
The 22-strategy list is taken from live ashareapi /v1/screen responses (verified 2026-09-29: an invalid preset returns the full list); grouping and parameters follow measured verification notes (2026-08-31); all result rows are live runs.