Ken French Data Library — factors & test portfolios
Verified May 16, 2026 · tested with live CSV-zip fetch (F-F_Research_Data_Factors, 200, monthly-fresh)
The Ken French Data Library (Tuck/Dartmouth) is the canonical free source for asset-pricing factors and test assets: FF3/FF5/FF6 factors, momentum, industry portfolios, and 100+ characteristic-sorted portfolio sets. No authentication, updated monthly. It is what the ZeroPaper pipeline uses to compute alphas and build test assets. This page is the distilled recipe.
- Cost: free, no key, no auth.
- Cadence: updated monthly (the zip I fetched was dated within the month).
- Coverage: US + international factors, sorts, industry portfolios.
- Home: https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html
Access
Section titled “Access”Option 1 — pandas-datareader (preferred)
Section titled “Option 1 — pandas-datareader (preferred)”# pip install pandas-datareaderimport pandas_datareader.data as web
ff3 = web.DataReader("F-F_Research_Data_Factors", "famafrench", start="1963")ff3[0].head() # dict of DataFrames; [0] = monthly: Mkt-RF, SMB, HML, RFOption 2 — Direct CSV zip (no package)
Section titled “Option 2 — Direct CSV zip (no package)”import pandas as pd, zipfile, io, requests
url = ("https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/" "ftp/F-F_Research_Data_Factors_CSV.zip")z = zipfile.ZipFile(io.BytesIO(requests.get(url).content))df = pd.read_csv(z.open(z.namelist()[0]), skiprows=3)Gotchas (the ones that bite pipelines)
Section titled “Gotchas (the ones that bite pipelines)”The reason to read this page rather than the library site. Verified against a live download on the date above.
- Returns are in PERCENT, not decimal.
Mkt-RF = 1.23means 1.23%, not 123%. Divide by 100 before compounding or regressing. This is the single most common error against this data. - CSV has a multi-line text header. Numeric data starts after a preamble —
skiprows=3for the factors file, but it varies by dataset; never assume, inspect. - One file often holds multiple tables. Monthly and annual tables are
stacked in the same CSV, separated by blank lines and a second header.
Read only to the first blank line, or split deliberately — a naive
read_csvsilently concatenates them. - Dates are
YYYYMMintegers for monthly files (e.g.202401), not parseable dates. Convert explicitly. - Value- vs equal-weighted. Many portfolio sets ship both; the file/column must be stated or the result isn’t reproducible.
pandas-datareaderreturns a dict, not a DataFrame —[0]is monthly,[1]annual, with a'DESCR'key documenting the build.
Key datasets
Section titled “Key datasets”| Dataset | Contents |
|---|---|
F-F_Research_Data_Factors | Mkt-RF, SMB, HML, RF (monthly/annual) |
F-F_Research_Data_5_Factors_2x3 | + RMW, CMA |
F-F_Momentum_Factor | MOM |
25_Portfolios_5x5 | Size × B/M test assets |
100_Portfolios_10x10 | Size × B/M, fine grid |
6_Portfolios_2x3 | The sorts used to build the factors |
100+ more on the site (industry, international, single-sort characteristics).
Standard operations
Section titled “Standard operations”- Factor models: regress excess returns on FF3/FF5/FF6.
- GRS test: joint test that a set of alphas is zero (use the matching test-portfolio set).
- Sharpe ratios: mean/std of factor returns, annualized appropriately.
- Fama-MacBeth: cross-sectional regressions on portfolio test assets.
- Always report sample period and value- vs equal-weighting.
Citation
Section titled “Citation”Fama, E. F., and K. R. French. Data from the Kenneth R. French Data Library, Tuck School of Business, Dartmouth College; https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html, accessed YYYY-MM-DD. Cite the originating papers (Fama-French 1993, 2015; Carhart 1997) as appropriate.