Codex adapter note
This skill is generated from skills/quality-screen.md so Claude Code and Codex users share one canonical workflow.
- Treat
$ARGUMENTSas the user's request in the current Codex thread. - When the source mentions Claude-only surfaces such as Task, Agent, WebSearch, Bash, Read, or Write, use the closest Codex capability available in this session: subagents when available, web search when needed, shell commands for local tools, and normal file edits for workspace files.
- Use shared project tools from
tools/in this repository. Prefer running commands from the repository root with paths likepython3 tools/financial_rigor.py ...; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path. - Before starting research, run the
datecommand to confirm today's date; treat it as the baseline for "latest" data and state the data cutoff date in the report header. Never assume the current date from training data. - Preserve the research quality rules from
AGENTS.md: cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.
Execute negative screening metrics on $ARGUMENTS to quickly exclude targets that do not meet first-class company standards.
Supported input formats:
| Input method | Example | Description |
|---|---|---|
| Individual stock | 腾讯, 美团, 英伟达 |
Screen one by one |
| Industry | 中国啤酒行业 全球云计算 港股运动品牌 |
First search for the industry's major listed companies (10-20), then screen one by one |
| Market/Index | 恒生指数成分股 沪深300 纳斯达克100 |
Pull the constituent stock list and screen one by one |
| Theme | 中国高股息50强 全球AI算力链 |
First search for companies related to the theme, then screen one by one |
In industry/market/theme mode, the output additionally includes: pass rate statistics, industry ranking, and sector comparison summary.
Design principles
- Goal: Do not wrongly kill any first-class good company, but be able to exclude confirmed non-first-class companies
- Logic: 7 hard metrics + 2 exemption rules; better to let one slip through than to wrongly kill
- Scope of application: All listed companies (banks/insurers are not subject to metric 3, interest coverage ratio)
7 negative screening metrics
| # | Metric | Exclusion condition | What it measures |
|---|---|---|---|
| 1 | 10-year average ROE | < 8% | Capital efficiency—whether shareholders' money can beat the opportunity cost |
| 2 | 5-year cumulative free cash flow | Negative | Real money—whether profit is "paper wealth" |
| 3 | Interest coverage ratio (EBIT/interest) | < 2x | Debt repayment safety—the ability to pay interest |
| 4 | Long-term gross margin | < 15% | Pricing power—whether the product/service is differentiated |
| 5 | Operating cash flow / net profit (5-year average) | < 0.7 | Profit quality—whether the profit earned can be collected in cash |
| 6 | Long-term net margin | < 5% | Risk resistance—whether profit goes to zero when revenue fluctuates |
| 7 | 5-year total share capital expansion | > 20% (not due to mergers and acquisitions) | Shareholder interests—whether management is diluting your equity |
3 exemption rules
Exemption A: Strategic investment period exemption (applies to metric 1)
If the following 3 conditions are all met, metric 1's ROE failure may be exempted:
- Listed for less than 10 years
- Gross margin > 30% (proves the business model itself has pricing power)
- Operating cash flow has been positive in the most recent 2 years (proves cash-generating ability is already in place)
Logic: High gross margin + cash flow turning positive indicates the business model is fine; low ROE is only because it is still in the investment period. Typical case: Meituan.
Exemption B: Active low profit margin exemption (applies to metric 6)
If the following 2 conditions are both met, metric 6's net margin failure may be exempted:
- Gross margin > 30% (able to earn but chooses not to)
- Net margin in the past 2 years has recovered to above 5%, or shows a clear upward trend
Logic: High gross margin indicates pricing power; low net margin is a strategic choice (reinvestment) rather than a lack of ability. Typical case: Amazon.
Exemption C: High-turnover thin-margin model exemption (applies to Article 4 and Article 6)
If the following 3 conditions are all met, exemption from Article 4 gross margin and Article 6 net margin non-compliance is allowed:
- ROE > 20% (proves that although profit margin is low, return on capital is extremely high)
- Operating cash flow/net profit > 1.0 (no problem with profit quality)
- The business model belongs to the "membership/platform commission/high-turnover thin-margin" type (profit is not reflected in product markups)
Logic: Some first-class companies' profits are not hidden in gross margin, but in membership fees, turnover efficiency, or platform commissions. Their gross margin and net margin are naturally very low, but extremely high ROE shows first-class capital efficiency. Typical case: Costco (gross margin 12%, net margin 2.5%, but ROE 25%+, membership renewal rate 90%+).
Execution process
Step 1: Parse the input and determine the screening scope
Mode determination:
- If the input is a specific company name/ticker → individual stock mode, go directly to Step 2
- If the input is an industry/market/theme → batch mode, first perform the following operations:
- Use WebSearch to search for major listed companies under that industry/market/theme
- Industry mode: cover the top 15-20 listed companies by market capitalization in that industry
- Index mode: pull the complete constituent stock list
- Theme mode: search for related companies, covering 15-30
- List the complete company list for confirmation (if the number of companies > 30, process in batches in parallel)
For each company, determine the full name, ticker, and exchange.
Step 2: Parallel data collection
Launch an independent background Agent for each company, using WebSearch to search for the following data:
- ROE: year-by-year ROE for the past 10 years (or since listing), calculate the average
- Free cash flow: operating cash flow and capital expenditure for the past 5 years, calculate 5-year cumulative FCF
- Interest coverage: latest annual EBIT and interest expense, calculate the multiple
- Gross margin: gross margin trend for the past 5 years
- Operating cash flow/net profit: ratio for the past 5 years, calculate the average
- Net margin: net margin trend for the past 10 years, calculate the average
- Total share capital change: total share capital 5 years ago and currently, calculate the expansion ratio
Data source priority: company annual reports > brokerage research reports > financial data platforms
Step 3: Item-by-item verification
For each company, verify the 7 indicators one by one:
- ✅ Pass
- ❌ Fail
- ⚠️ Borderline (attach numerical explanation)
If a certain article is violated, check whether the corresponding exemption condition is met.
Step 4: Output results
Output format
# 去劣筛选结果
**筛选日期**:{当天日期}
**公司数量**:{N}家
## 汇总表
| 公司 | ①ROE | ②FCF | ③利息覆盖 | ④毛利率 | ⑤OCF/NI | ⑥净利率 | ⑦稀释 | 结果 |
|------|------|------|----------|---------|---------|---------|-------|------|
| xxx | ✅ 24% | ✅ | ✅ | ✅ 56% | ✅ | ✅ 30% | ✅ | **通过** |
| yyy | ❌ 3% | ❌ | ❌ | ✅ 20% | ✅ | ❌ 2% | ✅ | **排除** |
| zzz | ⚠️→✅ | ✅ | ✅ | ✅ 35% | ✅ | ⚠️→✅ | ✅ | **豁免通过** |
## 通过的公司(N家)
[列表]
## 排除的公司(N家)
| 公司 | 触犯指标 | 具体数据 | 排除理由 |
|------|---------|---------|---------|
## 豁免通过的公司(N家)
| 公司 | 豁免条款 | 具体数据 | 豁免理由 |
|------|---------|---------|---------|
## 边界争议(如有)
[对处于阈值附近的公司做补充说明]
## 板块总结(行业/市场模式专用)
**通过率**:{通过数}/{总数} = {百分比}
**行业质量判断**:[根据通过率给出行业整体质量评价]
| 质量分层 | 公司 | 共同特征 |
|---------|------|---------|
| 一流(全过+高ROE) | xxx, yyy | ... |
| 合格(全过但指标平庸) | aaa, bbb | ... |
| 淘汰 | ccc, ddd | ... |
**行业选股结论**:[一句话总结该行业值不值得深挖,最值得关注的2-3家是谁]
Notes
- Banks/insurance: Article 3 (interest coverage) does not apply; their business model is essentially spread-based operation
- REIT: ROE may fluctuate greatly due to property revaluation; use "core operating profit ROE" instead
- Insufficient data: if a certain piece of data cannot be obtained, mark it as "insufficient data" rather than directly judging pass/fail
- Cyclical industries: use the average over a complete cycle (covering at least one high point and one low point), not a single year
- Short time since listing: for companies with less than 5 years, use all available data, but mark "insufficient data window" in the results
Statement of limitations
This set of metrics can rule out companies that are "definitely bad", but passing the screening does not mean they are "definitely good". Companies that pass still require further research:
- Whether the business model is sustainable
- Whether management is trustworthy
- Whether the current valuation is reasonable
- Whether the competitive landscape is deteriorating
Eliminating the bad is the first step, not the last.