Asset-Pricing Test Design (jf-empirical-design)
When to trigger
- You have a candidate predictor / anomaly / factor and must decide how to test it
- You are unsure whether to run Fama–MacBeth, time-series factor regressions, or a panel
- You report t-stats but have not addressed the standard-error subtleties of cross-sectional asset pricing
- A referee will ask "is this data mining / does it survive multiple testing / does it work out of sample?"
Scope: this skill is for asset-pricing tests. For corporate/empirical causal effects, route to jf-identification.
Choosing the test
| Goal |
Workhorse design |
| Does characteristic X price the cross-section? |
Fama–MacBeth cross-sectional regressions + portfolio sorts |
| Is a candidate factor priced / spanned? |
Time-series regressions; GRS test; spanning vs. established factors |
| Compare competing factor models |
Alphas of test assets; max-Sharpe / HJ distance; model comparison |
| Does a signal predict returns? |
Predictive regressions + long-short; in/out-of-sample R² (Campbell–Thompson) |
| Panel with firm/time variation |
Panel with appropriate fixed effects and clustering |
JF-specific standards
JF asset-pricing referees engage the JF-published canon — Sharpe (1964) CAPM, Fama–French (1992), Jegadeesh–Titman (1993) momentum, Carhart (1997) — and expect you to benchmark against the right factors (recall the FF three-factor model is JFE 1993). They also expect:
- Errors-in-variables / Shanken correction on Fama–MacBeth standard errors where betas are estimated.
- Multiple-testing discipline: a new anomaly must survive the "factor zoo" critique (Harvey, Liu & Zhu, JF) — adjusted t-thresholds, not the naive 1.96.
- Out-of-sample evidence for predictability claims, not just in-sample fit.
- Economic magnitude (Sharpe gain, alpha in bps), since JF writes for a general-interest reader.
- Exhaustive specifications go to the Internet Appendix (bundled in the same PDF; see
jf-internet-appendix), keeping the body within 60 pages.
Worked vignette — a risk-vs-mispricing horse race
Illustrative numbers. A new characteristic predicts the cross-section: a long–short decile spread of 0.60%/month, raw t = 3.3. The JF question is not "is it significant?" but "is it risk or mispricing, and does it survive the canon?"
- Benchmark against the right factors. Regress on Fama–French five factors + momentum; suppose the alpha is 0.42%/month (t = 2.9). The shrinkage from 0.60 already shows part of the spread is known-factor exposure.
- Clear the multiple-testing bar. If mined from many candidates, t = 2.9 must beat the factor-zoo cutoff (Harvey–Liu–Zhu argue ~3.0, illustratively); a borderline t is a referee magnet.
- Risk vs. mispricing. For risk, show the characteristic loads on priced covariance (GRS test). For mispricing, show the alpha concentrates among hard-to-arbitrage names and decays after ~6 months. JF rewards a paper that adjudicates.
- Out-of-sample. Campbell–Thompson out-of-sample R² for the predictive version; in-sample-only reads as data-snooping.
- Economic magnitude. Translate to an annualized Sharpe gain (≈ 0.35) so the general-interest reader sees the stake.
The full grid — all factor models, subperiods, cost nets — goes to the Internet Appendix; the body carries the alpha table, GRS test, and OOS result.
Referee-pushback patterns and the JF-specific fix
| Pushback you will hear |
JF-specific fix |
| "It's just exposure to known factors" |
Report alphas vs. FF5 + momentum; show the residual spread |
| "t = 3.3 after mining is not 1.96 territory" |
Apply the factor-zoo-adjusted threshold; disclose the search |
| "Is this risk or mispricing?" |
Run the horse race (GRS / covariance vs. arbitrage-limits decay) |
| "In-sample only" |
Add out-of-sample R² (Campbell–Thompson) or a holdout |
| "These are illiquid microcaps" |
Value-weighted, NYSE-breakpoint, post-cost version |
Calibration anchors for JF asset pricing
- The flagship rewards tests that adjudicate a first-order question (covariance risk vs. correctable mispricing) over a bare predictive regression.
- SE and multiple-testing conventions evolve; the EIV/Shanken correction and factor-zoo threshold are durable, but confirm the favored estimators and benchmark factor sets against recent JF issues.
- Economic magnitude in interpretable units (Sharpe gain, bps alpha) is non-negotiable in the body, since JF writes for a non-specialist reader.
Execution bridge (StatsPAI / Stata MCP)
Run the asset-pricing battery, don't just specify it. Full map:
shared-resources/empirical-methods/execution-with-mcp.md. JF asset-pricing instantiation:
- Factor regressions / time-series alphas:
feols with the right SEs
(vcov="HC3" or Newey–West / clustered) — read the alpha and t off the return, not
off a memory of the spec.
- The factor-zoo haircut (the JF-salient one): after disclosing how many signals
were screened, apply
romano_wolf (step-down, accounts for cross-signal correlation)
or benjamini_hochberg, and report the alpha that survives the adjusted threshold —
the executed Harvey–Liu–Zhu discipline.
- Fama–MacBeth + Shanken EIV correction are Stata-canonical: run them through the
Stata MCP (
mcp__stata-mcp__stata_do) with the vendored resources/code/ skeleton
(asreg/xtfmb, Shanken-adjusted SEs) and reconcile to the Python alpha.
- Emit JF-format exhibits with
etable; hand formatting to jf-tables-figures.
Report the economic magnitude (bps/month alpha, Sharpe gain) the body requires;
the full factor-model grid and all screened signals go to the bundled Internet Appendix.
If a server is not connected, adapt resources/code/ and flag any unverified number.
Checklist
Anti-patterns
- Reporting raw t > 1.96 as decisive after mining many signals (the factor-zoo trap)
- Fama–MacBeth t-stats with no EIV/Shanken adjustment
- In-sample-only predictability dressed up as a discovery
- Crowding every robustness table into the body instead of the Internet Appendix
Output format
【Test chosen + why】...
【SE correction (Shanken/NW/cluster)】...
【Multiple-testing threshold cleared?】yes / no
【Out-of-sample evidence?】yes / no
【Economic magnitude】...
【Next step】jf-robustness
Source: brycewang-stanford/Awesome-Journal-Skills → Journal-of-Finance-Skills/skills/jf-empirical-design/SKILL.md
1---2name: jf-empirical-design3description: Use when designing or stress-testing an asset-pricing test for a The Journal of Finance (JF) manuscript — factor models, Fama–MacBeth vs. panel, standard-error corrections, out-of-sample discipline. For corporate causal claims use jf-identification.4---567# Asset-Pricing Test Design (jf-empirical-design)89## When to trigger1011- You have a candidate predictor / anomaly / factor and must decide how to test it12- You are unsure whether to run Fama–MacBeth, time-series factor regressions, or a panel13- You report t-stats but have not addressed the standard-error subtleties of cross-sectional asset pricing14- A referee will ask "is this data mining / does it survive multiple testing / does it work out of sample?"1516> Scope: this skill is for **asset-pricing tests**. For corporate/empirical causal effects, route to `jf-identification`.1718## Choosing the test1920| Goal | Workhorse design |21|-------------------------------------------------|-------------------------------------------------------------|22| Does characteristic X price the cross-section? | Fama–MacBeth cross-sectional regressions + portfolio sorts |23| Is a candidate factor priced / spanned? | Time-series regressions; GRS test; spanning vs. established factors |24| Compare competing factor models | Alphas of test assets; max-Sharpe / HJ distance; model comparison |25| Does a signal predict returns? | Predictive regressions + long-short; in/out-of-sample R² (Campbell–Thompson) |26| Panel with firm/time variation | Panel with appropriate fixed effects and clustering |2728## JF-specific standards2930JF asset-pricing referees engage the JF-published canon — **Sharpe (1964) CAPM, Fama–French (1992), Jegadeesh–Titman (1993) momentum, Carhart (1997)** — and expect you to benchmark against the right factors (recall the FF three-factor model is JFE 1993). They also expect:31- **Errors-in-variables / Shanken correction** on Fama–MacBeth standard errors where betas are estimated.32- **Multiple-testing discipline**: a new anomaly must survive the "factor zoo" critique (Harvey, Liu & Zhu, JF) — adjusted t-thresholds, not the naive 1.96.33- **Out-of-sample** evidence for predictability claims, not just in-sample fit.34- **Economic magnitude** (Sharpe gain, alpha in bps), since JF writes for a general-interest reader.35- Exhaustive specifications go to the **Internet Appendix** (bundled in the same PDF; see `jf-internet-appendix`), keeping the body within 60 pages.3637## Worked vignette — a risk-vs-mispricing horse race3839*Illustrative numbers.* A new characteristic predicts the cross-section: a long–short decile spread of 0.60%/month, raw t = 3.3. The JF question is not "is it significant?" but "is it risk or mispricing, and does it survive the canon?"40411. **Benchmark against the right factors.** Regress on Fama–French five factors + momentum; suppose the alpha is 0.42%/month (t = 2.9). The shrinkage from 0.60 already shows part of the spread is known-factor exposure.422. **Clear the multiple-testing bar.** If mined from many candidates, t = 2.9 must beat the factor-zoo cutoff (Harvey–Liu–Zhu argue ~3.0, illustratively); a borderline t is a referee magnet.433. **Risk vs. mispricing.** For risk, show the characteristic loads on priced covariance (GRS test). For mispricing, show the alpha concentrates among hard-to-arbitrage names and decays after ~6 months. JF rewards a paper that *adjudicates*.444. **Out-of-sample.** Campbell–Thompson out-of-sample R² for the predictive version; in-sample-only reads as data-snooping.455. **Economic magnitude.** Translate to an annualized Sharpe gain (≈ 0.35) so the general-interest reader sees the stake.4647The full grid — all factor models, subperiods, cost nets — goes to the **Internet Appendix**; the body carries the alpha table, GRS test, and OOS result.4849### Referee-pushback patterns and the JF-specific fix50| Pushback you will hear | JF-specific fix |51|----------------------------------------------------|------------------------------------------------------------------|52| "It's just exposure to known factors" | Report alphas vs. FF5 + momentum; show the residual spread |53| "t = 3.3 after mining is not 1.96 territory" | Apply the factor-zoo-adjusted threshold; disclose the search |54| "Is this risk or mispricing?" | Run the horse race (GRS / covariance vs. arbitrage-limits decay) |55| "In-sample only" | Add out-of-sample R² (Campbell–Thompson) or a holdout |56| "These are illiquid microcaps" | Value-weighted, NYSE-breakpoint, post-cost version |5758## Calibration anchors for JF asset pricing59- The flagship rewards tests that **adjudicate a first-order question** (covariance risk vs. correctable mispricing) over a bare predictive regression.60- SE and multiple-testing conventions evolve; the EIV/Shanken correction and factor-zoo threshold are durable, but confirm the favored estimators and benchmark factor sets against recent JF issues.61- Economic magnitude in interpretable units (Sharpe gain, bps alpha) is non-negotiable in the body, since JF writes for a non-specialist reader.6263## Execution bridge (StatsPAI / Stata MCP)6465Run the asset-pricing battery, don't just specify it. Full map:66[`shared-resources/empirical-methods/execution-with-mcp.md`](../../../shared-resources/empirical-methods/execution-with-mcp.md). JF asset-pricing instantiation:6768- **Factor regressions / time-series alphas:** `feols` with the right SEs69 (`vcov="HC3"` or Newey–West / clustered) — read the alpha and t off the return, not70 off a memory of the spec.71- **The factor-zoo haircut (the JF-salient one):** after disclosing how many signals72 were screened, apply `romano_wolf` (step-down, accounts for cross-signal correlation)73 or `benjamini_hochberg`, and report the alpha that survives the adjusted threshold —74 the executed Harvey–Liu–Zhu discipline.75- **Fama–MacBeth + Shanken EIV correction** are Stata-canonical: run them through the76 Stata MCP (`mcp__stata-mcp__stata_do`) with the vendored `resources/code/` skeleton77 (`asreg`/`xtfmb`, Shanken-adjusted SEs) and reconcile to the Python alpha.78- **Emit JF-format exhibits** with `etable`; hand formatting to `jf-tables-figures`.7980Report the **economic magnitude** (bps/month alpha, Sharpe gain) the body requires;81the full factor-model grid and all screened signals go to the bundled Internet Appendix.82If a server is not connected, adapt `resources/code/` and flag any unverified number.8384## Checklist8586- [ ] Test matched to the question (FM / time-series / panel)87- [ ] Standard errors correct for the design (Shanken, NW, clustering)88- [ ] New factor/anomaly survives a multiple-testing-adjusted threshold89- [ ] Out-of-sample check for any predictability claim90- [ ] Benchmarked against the standard factor models, attributed correctly91- [ ] Economic magnitude reported, not just t-stats9293## Anti-patterns9495- Reporting raw t > 1.96 as decisive after mining many signals (the factor-zoo trap)96- Fama–MacBeth t-stats with no EIV/Shanken adjustment97- In-sample-only predictability dressed up as a discovery98- Crowding every robustness table into the body instead of the Internet Appendix99100## Output format101102```103【Test chosen + why】...104【SE correction (Shanken/NW/cluster)】...105【Multiple-testing threshold cleared?】yes / no106【Out-of-sample evidence?】yes / no107【Economic magnitude】...108【Next step】jf-robustness109```110111---112113**Source:** [`brycewang-stanford/Awesome-Journal-Skills`](https://github.com/brycewang-stanford/Awesome-Journal-Skills) → `Journal-of-Finance-Skills/skills/jf-empirical-design/SKILL.md`