JFQA Data Analysis (jfqa-data-analysis)
Use this skill to execute and document the estimation for a JFQA empirical finance paper so it is both credible and reproducible from the code you will archive (see jfqa-replication-and-data-policy).
Data construction (finance-specific)
- Build from standard sources (CRSP, Compustat, CRSP/Compustat Merged, TAQ, IBES, TRACE, OptionMetrics) and document every filter (share codes, exchanges, financials/utilities exclusions, delisting returns).
- Winsorize or trim outliers and disclose the cutoffs; finance variables (ratios, returns) have heavy tails.
- Report the sample period, the number of firms and observations, and the unit of analysis.
Estimation & inference
- Use fixed effects appropriate to the question; justify the clustering dimension (firm, time, or two-way) — finance referees will ask.
- For asset-pricing tests, use Fama-MacBeth with Newey-West or the appropriate correction; for panels, cluster-robust SEs.
- Report economic magnitudes (e.g., effect of a one-SD change, basis points, alpha per month), not just significance stars.
Robustness & heterogeneity
- Alternative samples, alternative variable definitions, alternative fixed effects and clustering.
- Subsample/heterogeneity cuts motivated by the mechanism, not fishing.
- Placebo or falsification tests where the design allows.
Reproducibility discipline
- One master script regenerating every table/figure from raw (or pseudo) data.
- Pin software/package versions; set and report seeds for any bootstrap/simulation.
- Keep the pipeline archive-ready as you go — JFQA may run random external code verification.
Theory papers
If the paper is theoretical, lighten this skill: replace empirical estimation with reproducible numerical examples / calibrations that illustrate the propositions, and document the computation so a reader can rerun it.
Standard-error decision grid (the first thing a JFQA referee checks)
| Setting |
Inference JFQA referees expect |
Also show |
| Firm panel, persistent outcome |
two-way cluster (firm and year), or firm cluster with year FE |
robustness to the other clustering choice |
| Fama-MacBeth on monthly returns |
Newey-West with the lag count stated and justified |
plain FMB SEs for comparison |
| Staggered policy adoption |
cluster at the level of treatment assignment (e.g., state) |
event-study leads/lags |
| Few clusters (roughly < 50) |
wild cluster bootstrap p-values |
the cluster count itself |
| Overlapping long-horizon returns |
Newey-West/Hodrick lags matched to the horizon |
non-overlapping subsample check |
| Generated regressors (betas, fitted values) |
bootstrap or an errors-in-variables correction |
the uncorrected SEs flagged as such |
An unjustified clustering choice is among the most common JFQA referee complaints; pre-empt it in the table notes, not just the text.
Worked pass: a corporate-finance panel (numbers illustrative)
Hypothetical study of cash holdings and supplier concentration. Sample: Compustat 1990-2023, financials (SIC 6000-6999) and utilities (4900-4999) dropped, ratios winsorized at the 1st/99th percentiles. With firm and year fixed effects and two-way clustering, the standardized coefficient is 0.021 (t = 3.4): a one-SD rise in concentration moves cash/assets by 2.1 pp, about 12% of the 17.5 pp sample mean. The JFQA-grade write-up reports the 12%-of-mean line next to the t-stat, names the clustering in the note, and adds a falsification on firms with nationally diversified suppliers where the mechanism predicts nothing.
Filter log the referee will try to reconstruct
- CRSP: share codes 10/11; the exchange universe stated; delisting returns merged and the treatment of missing delisting returns disclosed.
- Compustat: accounting data lagged so it was publicly available at the return date; duplicate gvkey-period rows resolved.
- Linking: CCM link table with valid link-date ranges — never name matching.
- Any price or size screens (e.g., penny-stock exclusions) disclosed and shown not to drive the result.
- Each filter's observation loss tracked so the sample-construction table sums from raw pulls to the final N.
Execution bridge (StatsPAI / Stata MCP)
Run the battery, don't just enumerate it. Full map:
execution-with-mcp. JFQA is empirical finance (asset pricing + corporate) — the DiD / IV / RDD chain for corporate causal claims, the factor-zoo haircut for cross-sectional pricing.
- Many outcomes / specifications:
romano_wolf (step-down FWER, accounts for
cross-test correlation) or benjamini_hochberg — report the adjusted threshold.
- OVB sensitivity:
oster_delta / sensemakr — the confounder strength that would
overturn the headline.
- Inference:
wild_cluster_bootstrap (few clusters), twoway_cluster / conley.
- Re-fit off one handle:
audit_result(result_id) lists the missing checks and the
exact suggest_function for each — no guessing the battery.
- Exhibits:
etable / did_summary_to_latex from the handle — no retyped numbers.
Keep the decisive checks in the body and the exhaustive (now actually-run) battery in
the appendix. See the executed chain in the JF execution walkthrough.
Output format
【Sample】sources, filters, period, N firms/obs
【Estimator】FE / FMB / DID / IV + clustering justified
【Magnitudes】economic effect sizes reported
【Robustness】samples / definitions / placebos
【Next step】jfqa-tables-figures
Source: brycewang-stanford/Awesome-Journal-Skills → Journal-of-Financial-and-Quantitative-Analysis-Skills/skills/jfqa-data-analysis/SKILL.md
1---2name: jfqa-data-analysis3description: Use when running and documenting the empirical analysis for a Journal of Financial and Quantitative Analysis (JFQA) paper — finance data construction (CRSP/Compustat/TAQ/IBES), winsorizing, fixed effects, clustered and Newey-West standard errors, robustness, and heterogeneity — so results survive double-anonymous JFQA review and reproduce from the archived code. For theory papers, lighten this and document numerical examples instead.4---567# JFQA Data Analysis (jfqa-data-analysis)89Use this skill to execute and document the estimation for a **JFQA** empirical finance paper so it is both credible and reproducible from the code you will archive (see jfqa-replication-and-data-policy).1011## Data construction (finance-specific)1213- Build from standard sources (CRSP, Compustat, CRSP/Compustat Merged, TAQ, IBES, TRACE, OptionMetrics) and document every filter (share codes, exchanges, financials/utilities exclusions, delisting returns).14- **Winsorize or trim** outliers and disclose the cutoffs; finance variables (ratios, returns) have heavy tails.15- Report the sample period, the number of firms and observations, and the unit of analysis.1617## Estimation & inference1819- Use fixed effects appropriate to the question; justify the **clustering** dimension (firm, time, or two-way) — finance referees will ask.20- For asset-pricing tests, use **Fama-MacBeth** with Newey-West or the appropriate correction; for panels, cluster-robust SEs.21- Report **economic magnitudes** (e.g., effect of a one-SD change, basis points, alpha per month), not just significance stars.2223## Robustness & heterogeneity2425- Alternative samples, alternative variable definitions, alternative fixed effects and clustering.26- Subsample/heterogeneity cuts motivated by the mechanism, not fishing.27- Placebo or falsification tests where the design allows.2829## Reproducibility discipline3031- One master script regenerating every table/figure from raw (or pseudo) data.32- Pin software/package versions; set and report seeds for any bootstrap/simulation.33- Keep the pipeline archive-ready as you go — JFQA may run **random external code verification**.3435## Theory papers3637If the paper is theoretical, lighten this skill: replace empirical estimation with **reproducible numerical examples / calibrations** that illustrate the propositions, and document the computation so a reader can rerun it.3839## Standard-error decision grid (the first thing a JFQA referee checks)4041| Setting | Inference JFQA referees expect | Also show |42|---|---|---|43| Firm panel, persistent outcome | two-way cluster (firm and year), or firm cluster with year FE | robustness to the other clustering choice |44| Fama-MacBeth on monthly returns | Newey-West with the lag count stated and justified | plain FMB SEs for comparison |45| Staggered policy adoption | cluster at the level of treatment assignment (e.g., state) | event-study leads/lags |46| Few clusters (roughly < 50) | wild cluster bootstrap p-values | the cluster count itself |47| Overlapping long-horizon returns | Newey-West/Hodrick lags matched to the horizon | non-overlapping subsample check |48| Generated regressors (betas, fitted values) | bootstrap or an errors-in-variables correction | the uncorrected SEs flagged as such |4950An unjustified clustering choice is among the most common JFQA referee complaints; pre-empt it in the table notes, not just the text.5152## Worked pass: a corporate-finance panel (numbers illustrative)5354Hypothetical study of cash holdings and supplier concentration. Sample: Compustat 1990-2023, financials (SIC 6000-6999) and utilities (4900-4999) dropped, ratios winsorized at the 1st/99th percentiles. With firm and year fixed effects and two-way clustering, the standardized coefficient is 0.021 (t = 3.4): a one-SD rise in concentration moves cash/assets by 2.1 pp, about 12% of the 17.5 pp sample mean. The JFQA-grade write-up reports the 12%-of-mean line next to the t-stat, names the clustering in the note, and adds a falsification on firms with nationally diversified suppliers where the mechanism predicts nothing.5556## Filter log the referee will try to reconstruct5758- CRSP: share codes 10/11; the exchange universe stated; delisting returns merged and the treatment of missing delisting returns disclosed.59- Compustat: accounting data lagged so it was publicly available at the return date; duplicate gvkey-period rows resolved.60- Linking: CCM link table with valid link-date ranges — never name matching.61- Any price or size screens (e.g., penny-stock exclusions) disclosed and shown not to drive the result.62- Each filter's observation loss tracked so the sample-construction table sums from raw pulls to the final N.6364## Execution bridge (StatsPAI / Stata MCP)6566Run the battery, don't just enumerate it. Full map:67[`execution-with-mcp`](../../../shared-resources/empirical-methods/execution-with-mcp.md). JFQA is empirical finance (asset pricing + corporate) — the DiD / IV / RDD chain for corporate causal claims, the factor-zoo haircut for cross-sectional pricing.6869- **Many outcomes / specifications:** `romano_wolf` (step-down FWER, accounts for70 cross-test correlation) or `benjamini_hochberg` — report the adjusted threshold.71- **OVB sensitivity:** `oster_delta` / `sensemakr` — the confounder strength that would72 overturn the headline.73- **Inference:** `wild_cluster_bootstrap` (few clusters), `twoway_cluster` / `conley`.74- **Re-fit off one handle:** `audit_result(result_id)` lists the missing checks and the75 exact `suggest_function` for each — no guessing the battery.76- **Exhibits:** `etable` / `did_summary_to_latex` from the handle — no retyped numbers.7778Keep the decisive checks in the body and the exhaustive (now actually-run) battery in79the appendix. See the executed chain in the [JF execution walkthrough](../../../Journal-of-Finance-Skills/resources/worked-examples/02-execution-walkthrough.md).80## Output format8182```83【Sample】sources, filters, period, N firms/obs84【Estimator】FE / FMB / DID / IV + clustering justified85【Magnitudes】economic effect sizes reported86【Robustness】samples / definitions / placebos87【Next step】jfqa-tables-figures88```8990---9192**Source:** [`brycewang-stanford/Awesome-Journal-Skills`](https://github.com/brycewang-stanford/Awesome-Journal-Skills) → `Journal-of-Financial-and-Quantitative-Analysis-Skills/skills/jfqa-data-analysis/SKILL.md`