Applications and Examples¶
Below are some examples of how the package can be used to construct datasets from Ken French’s online library as well as many other similar datasets. Throughout, the constructed datasets are compared to those provided by Ken French.
Let’s start by importing this package as well as other required Python libraries:
In [1]: import datetime as dt
In [2]: import famafrench.famafrench as ff
Let’s create all our datasets from 1950 to the present, or the most recent date for which there is stock returns data. We set runQuery
to True
and query all datafiles directly from wrds-cloud.
In [3]: startDate = dt.date(1950, 1, 1)
In [4]: endDate = dt.date.today()
In [5]: runQuery = True
Fama-French 3 Factors¶
Fama-French 3 Factors : Daily¶
In [6]: ffFreq = 'D'
In [7]: ffsortCharac = ['ME', 'BM']
In [8]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [9]: ff3_D = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors)
In [10]: # Summary statistics
ff3_D.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [02:45<00:00, 82.68s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: D ************************
mkt mkt-rf smb hml
startdate 1970-01-02 1970-01-02 1970-01-02 1970-01-02
enddate 2020-02-28 2020-02-28 2020-02-28 2020-02-28
count 12653 12653 12653 12653
mean 0.04% 0.03% 0.0% 0.02%
std 1.02% 1.02% 0.55% 0.55%
min -17.45% -17.47% -11.64% -4.39%
1% -2.77% -2.78% -1.4% -1.5%
10% -1.05% -1.07% -0.6% -0.52%
25% -0.41% -0.43% -0.29% -0.24%
50% 0.07% 0.05% 0.02% 0.01%
75% 0.54% 0.53% 0.3% 0.26%
90% 1.1% 1.08% 0.6% 0.56%
99% 2.75% 2.72% 1.4% 1.64%
max 11.36% 11.36% 6.27% 4.91%
skew -0.53% -0.52% -0.97% 0.32%
kurt 14.53% 14.53% 21.77% 9.86%
mad 0.69% 0.7% 0.39% 0.36%
[17 rows x 6 columns]
In [11]: # Compare daily Fama-French 3 factors constructed here to those provided in Ken French's online library
_, _, _, = ff3_D.comparePortfolios('Factors', ffFreq, startDate, endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [03:30<00:00, 105.19s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [03:03<00:00, 91.90s/it]
*********************************** Factor Returns: 1970-01-02 to 2020-02-28 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml
corr: 1.0 1.0 0.976 0.963
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [0.04, 0.04] [0.03, 0.03] [0.0, 0.0] [0.02, 0.02]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [1.02, 1.02] [1.02, 1.02] [0.55, 0.54] [0.55, 0.52]
Elapsed time: 169.73 seconds.
Fama-French 3 Factors : Annual¶
In [6]: ffFreq = 'A'
In [7]: ffsortCharac = ['ME', 'BM']
In [8]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [9]: ff3_A = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors)
In [10]: # Summary statistics
ff3_A.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [00:04<00:00, 2.38s/it]
Historical risk-free interest rate (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
**************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: A ************************
mkt mkt-rf smb hml
startdate 1970-12-31 1970-12-31 1970-12-31 1970-12-31
enddate 2020-12-31 2020-12-31 2020-12-31 2020-12-31
count 51 51 50 50
mean 11.67% 7.07% 1.49% 4.76%
std 17.63% 17.8% 11.33% 14.48%
min -36.65% -38.24% -25.74% -30.85%
1% -32.19% -36.99% -24.2% -28.01%
10% -11.24% -17.6% -10.61% -11.57%
25% 0.04% -5.1% -7.31% -4.62%
50% 15.41% 10.73% 0.42% 6.44%
75% 24.58% 20.3% 8.84% 14.79%
90% 32.58% 28.3% 15.29% 21.41%
99% 37.51% 33.82% 24.86% 36.02%
max 38.23% 35.22% 26.79% 47.04%
skew -0.65% -0.65% -0.02% 0.04%
kurt 0.0% -0.07% -0.22% 0.59%
mad 14.26% 14.44% 9.3% 11.5%
In [11]: # Compare annual Fama-French 3 factors constructed here to those provided in Ken French's online library
_, _, _, = ff3_A.comparePortfolios(kfType='Factors', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate)
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [00:05<00:00, 2.79s/it]
*********************************** Factor Returns: 1970-12-31 to 2019-12-31 ***********************************
*********************** Observation frequency: A ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml
corr: 1.0 1.0 0.995 0.977
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [12.07, 12.07] [7.37, 7.37] [1.49, 1.59] [4.76, 4.28]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [17.59, 17.6] [17.84, 17.86] [11.33, 11.5] [14.48, 14.36]
Elapsed time: 7.354 seconds.
Fama-French 5 Factors¶
Fama-French 5 Factors : Daily¶
In [6]: ffFreq = 'D'
In [7]: ffsortCharac = ['ME', 'BM']
In [8]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [9]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [10]: ff5_D = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ff5_D.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [08:02<00:00, 96.59s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: D ************************
mkt mkt-rf ... rmw hml
startdate 1970-01-02 1970-01-02 ... 1970-01-02 1970-01-02
enddate 2020-02-28 2020-02-28 ... 2020-02-28 2020-02-28
count 12653 12653 ... 12653 12653
mean 0.04% 0.03% ... 0.01% 0.02%
std 1.02% 1.02% ... 0.43% 0.55%
min -17.45% -17.47% ... -7.67% -4.39%
1% -2.77% -2.78% ... -1.17% -1.5%
10% -1.05% -1.07% ... -0.37% -0.52%
25% -0.41% -0.43% ... -0.17% -0.24%
50% 0.07% 0.05% ... 0.01% 0.01%
75% 0.54% 0.53% ... 0.19% 0.26%
90% 1.1% 1.08% ... 0.41% 0.56%
99% 2.75% 2.72% ... 1.25% 1.64%
max 11.36% 11.36% ... 6.01% 4.91%
skew -0.53% -0.52% ... -0.0% 0.32%
kurt 14.53% 14.53% ... 22.14% 9.86%
mad 0.69% 0.7% ... 0.27% 0.36%
[17 rows x 6 columns]
In [12]: # Compare daily Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_D.comparePortfolios(kfType='Factors', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [08:00<00:00, 96.11s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [08:34<00:00, 102.94s/it]
*********************************** Factor Returns: 1970-01-02 to 2020-02-28 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb cma rmw hml
corr: 1.0 1.0 0.976 0.917 0.902 0.963
Fama-French factors: Average matrix:
mkt mkt-rf ... rmw hml
[wrds, kflib]: [0.04, 0.04] [0.03, 0.03] ... [0.01, 0.01] [0.02, 0.02]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... rmw hml
[wrds, kflib]: [1.02, 1.02] [1.02, 1.02] ... [0.43, 0.38] [0.55, 0.52]
[1 rows x 6 columns]
Elapsed time: 518.612 seconds.
Fama-French 5 Factors : Monthly¶
In [6]: ffFreq = 'M'
In [7]: ffsortCharac = ['ME', 'BM']
In [8]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [9]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [10]: ff5_M = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ff5_M.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:14<00:00, 2.88s/it]
Historical risk-free interest rate (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: M ************************
mkt mkt-rf ... hml cma
startdate 1970-01-31 1970-01-31 ... 1970-01-31 1970-01-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 602 602 ... 602 602
mean 0.93% 0.55% ... 0.31% 0.28%
std 4.5% 4.51% ... 3.01% 1.93%
min -22.66% -23.26% ... -11.9% -7.08%
1% -10.96% -11.76% ... -8.43% -4.38%
10% -4.53% -4.94% ... -2.87% -1.89%
25% -1.71% -2.0% ... -1.45% -0.93%
50% 1.28% 0.94% ... 0.24% 0.17%
75% 3.9% 3.5% ... 1.79% 1.43%
90% 6.06% 5.57% ... 3.95% 2.67%
99% 11.35% 11.14% ... 8.33% 5.72%
max 16.6% 16.09% ... 12.43% 8.55%
skew -0.54% -0.56% ... 0.06% 0.33%
kurt 1.92% 1.91% ... 2.13% 1.43%
mad 3.41% 3.43% ... 2.2% 1.47%
[17 rows x 6 columns]
In [12]: # Compare monthly Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_M.comparePortfolios(kfType='Factors', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate)
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:14<00:00, 2.84s/it]
*********************************** Factor Returns: 1970-01-31 to 2020-02-29 ***********************************
*********************** Observation frequency: M ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb rmw hml cma
corr: 1.0 1.0 0.984 0.975 0.977 0.957
Fama-French factors: Average matrix:
mkt mkt-rf ... hml cma
[wrds, kflib]: [0.93, 0.93] [0.55, 0.55] ... [0.31, 0.3] [0.28, 0.31]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... hml cma
[wrds, kflib]: [4.5, 4.5] [4.51, 4.51] ... [3.01, 2.92] [1.93, 1.99]
[1 rows x 6 columns]
Elapsed time: 15.183 seconds.
Fama-French 5 Factors : Annual¶
In [6]: ffFreq = 'A'
In [7]: ffsortCharac = ['ME', 'BM']
In [8]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [9]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [10]: ff5_A = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ff5_A.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:14<00:00, 2.92s/it]
Historical risk-free interest rate (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: A ************************
mkt mkt-rf ... rmw cma
startdate 1970-12-31 1970-12-31 ... 1970-12-31 1970-12-31
enddate 2020-12-31 2020-12-31 ... 2020-12-31 2020-12-31
count 51 51 ... 50 50
mean 11.67% 7.07% ... 3.51% 3.74%
std 17.63% 17.8% ... 9.34% 8.82%
min -36.65% -38.24% ... -25.27% -14.95%
1% -32.19% -36.99% ... -23.54% -13.26%
10% -11.24% -17.6% ... -6.06% -7.29%
25% 0.04% -5.1% ... -0.87% -1.99%
50% 15.41% 10.73% ... 3.35% 3.15%
75% 24.58% 20.3% ... 8.66% 8.97%
90% 32.58% 28.3% ... 14.68% 14.68%
99% 37.51% 33.82% ... 22.08% 25.39%
max 38.23% 35.22% ... 22.2% 26.0%
skew -0.65% -0.65% ... -0.6% 0.34%
kurt 0.0% -0.07% ... 1.56% 0.2%
mad 14.26% 14.44% ... 6.88% 6.88%
[17 rows x 6 columns]
In [12]: # Compare annual Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_A.comparePortfolios(kfType='Factors', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:16<00:00, 3.32s/it]
Historical risk-free interest rate (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:17<00:00, 3.56s/it]
*********************************** Factor Returns: 1970-12-31 to 2019-12-31 ***********************************
*********************** Observation frequency: A ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml rmw cma
corr: 1.0 1.0 0.996 0.978 0.986 0.977
Fama-French factors: Average matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [12.07, 12.07] [7.37, 7.37] ... [3.42, 3.64] [3.88, 3.98]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [17.59, 17.6] [17.84, 17.86] ... [9.43, 9.54] [9.21, 9.76]
[1 rows x 6 columns]
Elapsed time: 18.957 seconds.
Momentum, Short-Term Reversal, and Long-Term Reversal Factor¶
MOM
, ST_Rev
, and LT_Rev
: Daily¶
In [6]: ffFreq = 'D'
In [7]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [8]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [9]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [10]: ffprior_D = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ffprior_D.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally. Querying from wrds-cloud...
CRSP-Compustat merged linktable currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [24:44<00:00, 371.14s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: D ************************
mkt mkt-rf st_rev lt_rev mom
startdate 1950-01-03 1950-01-03 1951-07-02 1951-07-02 1951-07-02
enddate 2020-02-28 2020-02-28 2020-02-28 2020-02-28 2020-02-28
count 17653 17653 17279 17279 17279
mean 0.05% 0.03% 0.1% 0.0% 0.03%
std 0.93% 0.93% 0.66% 0.43% 0.67%
min -17.45% -17.47% -6.86% -4.28% -7.79%
1% -2.55% -2.56% -1.6% -1.11% -2.01%
10% -0.95% -0.96% -0.47% -0.46% -0.61%
25% -0.36% -0.38% -0.17% -0.22% -0.23%
50% 0.07% 0.06% 0.08% -0.0% 0.06%
75% 0.49% 0.47% 0.34% 0.22% 0.33%
90% 0.97% 0.95% 0.68% 0.48% 0.66%
99% 2.44% 2.42% 2.13% 1.2% 1.83%
max 11.36% 11.36% 10.2% 4.41% 6.9%
skew -0.57% -0.57% 1.71% -0.12% -0.88%
kurt 16.24% 16.24% 26.23% 7.39% 14.15%
mad 0.62% 0.62% 0.4% 0.3% 0.43%
In [12]: # Compare daily Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_D.comparePortfolios(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (daily) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (daily) dataset currently NOT saved locally. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally. Querying from wrds-cloud...
CRSP-Compustat merged linktable currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [27:29<00:00, 412.39s/it]
Historical risk-free interest rate (daily) dataset currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [26:12<00:00, 393.02s/it]
*********************************** Factor Returns: 1950-01-03 to 2020-02-28 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf st_rev lt_rev mom
corr: 1.0 1.0 0.972 0.927 0.969
Fama-French factors: Average matrix:
mkt mkt-rf ... lt_rev mom
[wrds, kflib]: [0.05, 0.05] [0.03, 0.03] ... [0.0, 0.0] [0.03, 0.03]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... lt_rev mom
[wrds, kflib]: [0.93, 0.95] [0.93, 0.95] ... [0.43, 0.42] [0.67, 0.66]
[1 rows x 5 columns]
Elapsed time: 1587.064 seconds.
MOM
, ST_Rev
, and LT_Rev
: Monthly¶
In [6]: ffFreq = 'M'
In [7]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [8]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [9]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [10]: ffprior_M = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ffprior_M.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally. Querying from wrds-cloud...
CRSP-Compustat merged linktable currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:25<00:00, 6.44s/it]
Historical risk-free interest rate (monthly) dataset currently NOT saved locally. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: M ************************
mkt mkt-rf mom st_rev lt_rev
startdate 1950-01-31 1950-01-31 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 842 842 824 824 824
mean 0.97% 0.64% 0.69% 0.55% 0.11%
std 4.22% 4.24% 3.91% 2.89% 2.47%
min -22.66% -23.26% -33.02% -14.26% -14.31%
1% -10.17% -10.52% -9.54% -7.17% -5.36%
10% -4.26% -4.76% -3.42% -2.22% -2.62%
25% -1.58% -1.89% -0.96% -0.96% -1.34%
50% 1.33% 1.05% 0.78% 0.42% -0.04%
75% 3.71% 3.42% 2.72% 1.87% 1.51%
90% 5.68% 5.25% 4.54% 3.42% 3.0%
99% 11.09% 10.59% 9.68% 10.23% 6.75%
max 16.6% 16.09% 18.3% 16.74% 15.64%
skew -0.53% -0.55% -1.3% 0.43% 0.47%
kurt 1.92% 1.91% 10.51% 5.81% 4.11%
mad 3.22% 3.23% 2.66% 1.98% 1.83%
In [12]: # Compare monthly Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_M.comparePortfolios(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally. Querying from wrds-cloud...
CRSP-Compustat merged linktable currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:26<00:00, 6.71s/it]
Historical risk-free interest rate (monthly) dataset currently NOT saved locally. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:25<00:00, 6.25s/it]
*********************************** Factor Returns: 1950-01-31 to 2020-02-29 ***********************************
*********************** Observation frequency: M ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf mom st_rev lt_rev
corr: 1.0 1.0 0.986 0.977 0.95
Fama-French factors: Average matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [0.97, 0.96] [0.64, 0.62] ... [0.55, 0.52] [0.12, 0.12]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [4.22, 4.25] [4.24, 4.27] ... [2.89, 2.89] [2.48, 2.42]
[1 rows x 5 columns]
Elapsed time: 26.804 seconds.
MOM
, ST_Rev
, and LT_Rev
: Annual¶
In [6]: ffFreq = 'A'
In [7]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [8]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [9]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [10]: ffprior_A = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
In [11]: # Summary statistics
ffprior_A.getFamaFrenchStats(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:31<00:00, 7.88s/it]
Historical risk-free interest rate (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: A ************************
mkt mkt-rf mom st_rev lt_rev
startdate 1950-12-31 1950-12-31 1953-12-31 1953-12-31 1953-12-31
enddate 2020-12-31 2020-12-31 2020-12-31 2020-12-31 2020-12-31
count 72 72 67 67 67
mean 12.17% 8.11% 8.16% 7.17% 1.47%
std 17.56% 17.92% 17.1% 11.36% 12.5%
min -36.65% -38.24% -79.66% -17.67% -25.26%
1% -30.32% -36.47% -43.82% -16.09% -21.91%
10% -10.17% -14.96% -8.28% -5.06% -13.29%
25% 0.05% -4.63% 1.57% 0.33% -8.02%
50% 14.23% 10.71% 10.35% 5.8% 1.57%
75% 24.95% 20.74% 17.52% 13.37% 8.86%
90% 32.5% 28.74% 24.17% 18.27% 16.98%
99% 46.52% 45.18% 37.27% 42.81% 29.01%
max 50.21% 49.35% 38.24% 44.99% 31.03%
skew -0.38% -0.35% -2.12% 0.87% 0.27%
kurt -0.11% -0.05% 9.61% 2.15% -0.26%
mad 14.17% 14.36% 11.49% 8.3% 10.08%
In [12]: # Compare monthly Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_A.comparePortfolios(dataType='Factors', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate)
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:30<00:00, 7.54s/it]
*********************************** Factor Returns: 1950-12-31 to 2019-12-31 ***********************************
*********************** Observation frequency: A ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf mom st_rev lt_rev
corr: 1.0 1.0 0.989 0.969 0.978
Fama-French factors: Average matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [12.75, 12.75] [8.57, 8.57] ... [7.17, 7.07] [1.47, 1.59]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [17.46, 17.48] [17.96, 17.97] ... [11.36, 10.82] [12.5, 12.04]
[1 rows x 5 columns]
Elapsed time: 32.233 seconds.
Portfolios Sorted on Size ME
¶
In [6]: ffFactors, ffsortCharac, ffportCharac = [], ['ME'], ['ME']
Portfolios Sorted on Size ME
: Daily¶
In [7]: ffFreq = 'D'
In [8]: ff_D = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
(3 x 1) Sorts:
In [9]: sortingDim = [3]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
(5 x 1) Quintile Sorts:
In [9]: sortingDim = [5]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
(10 x 1) Decile Sorts:
In [9]: sortingDim = [10]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
Portfolios Sorted on Size ME
: Monthly¶
In [7]: ffFreq = 'M'
In [8]: ff_M = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
(3 x 1) Sorts:
In [9]: sortingDim = [3]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally. Querying from wrds-cloud...
CRSP-Compustat merged linktable currently NOT saved locally. Querying from wrds-cloud...
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
me0-30 me30-70 me70-100
startdate 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 824 824 824
mean 0.01% 0.01% 0.01%
std 0.06% 0.05% 0.04%
min -0.3% -0.27% -0.21%
1% -0.14% -0.12% -0.1%
10% -0.06% -0.05% -0.04%
25% -0.02% -0.02% -0.01%
50% 0.02% 0.02% 0.01%
75% 0.05% 0.04% 0.04%
90% 0.08% 0.07% 0.06%
99% 0.14% 0.12% 0.11%
max 0.28% 0.23% 0.18%
skew -0.33% -0.54% -0.41%
kurt 2.59% 2.53% 1.74%
mad 0.04% 0.04% 0.03%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
me0-30 me30-70 me70-100
startdate 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 824 824 824
mean 2172 723 396
std 1393 329 150
min 31 29 20
1% 102 132 99
10% 143 191 138
25% 847 428 293
50% 2430 838 440
75% 3305 920 500
90% 3876 1116 541
99% 4655 1334 676
max 4956 1428 718
skew -0 -0 -1
kurt -1 -1 -0
mad 1188 279 122
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
me_port me0-30 me30-70 me70-100
startdate 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 824 824 824
mean 98.04 850.42 10312.5
std 120.72 1003.63 12782.8
min 10.83 44.78 445.17
1% 10.83 44.78 445.17
10% 14.72 107.55 955.6
25% 22.32 145.12 1422.6
50% 37.26 393.6 3246.79
75% 126.37 1209.45 18281.1
90% 277.16 2506.54 28415.1
99% 604.29 4017.67 48861
max 611.05 4468.11 61026.1
skew 1.93 1.56 1.55
kurt 3.75 1.76 2.08
mad 91.54 787.58 10412.7
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me0-30 me70-100 me30-70
corr: 0.994 0.997 0.995
Average matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [1.18%, 1.12%] [0.95%, 0.94%] [1.11%, 1.09%]
Std Deviation matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [5.85%, 5.81%] [4.12%, 4.13%] [4.96%, 5.07%]
Elapsed time: 6.309 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me0-30 me70-100 me30-70
corr: 0.978 0.911 0.953
Average matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [2172, 2469] [396, 448] [723, 804]
Std Deviation matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [1393, 1479] [150, 96] [329, 266]
Elapsed time: 6.268 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1951-07-31 to 2020-02-29 ***************************
Correlation matrix:
me0-30 me70-100 me30-70
corr: 0.955 0.989 0.979
Average matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [98.04, 91.55] [10312.47, 10189.21] [850.42, 817.22]
Std Deviation matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [120.72, 109.95] [12782.78, 12893.69] [1003.63, 978.37]
Elapsed time: 5.401 seconds.
(5 x 1) Quintile Sorts:
In [9]: sortingDim = [5]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1951-07-31 1951-07-31 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 824 824 824 824 824
mean 0.01% 0.01% 0.01% 0.01% 0.01%
std 0.06% 0.06% 0.05% 0.05% 0.04%
min -0.3% -0.3% -0.27% -0.25% -0.2%
1% -0.15% -0.15% -0.12% -0.11% -0.1%
10% -0.06% -0.06% -0.05% -0.05% -0.04%
25% -0.02% -0.02% -0.02% -0.02% -0.01%
50% 0.02% 0.02% 0.02% 0.01% 0.01%
75% 0.05% 0.05% 0.04% 0.04% 0.04%
90% 0.08% 0.08% 0.07% 0.07% 0.06%
99% 0.15% 0.13% 0.13% 0.12% 0.11%
max 0.29% 0.26% 0.23% 0.19% 0.18%
skew -0.21% -0.49% -0.53% -0.49% -0.38%
kurt 2.77% 2.4% 2.41% 2.26% 1.7%
mad 0.04% 0.04% 0.04% 0.04% 0.03%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1951-07-31 1951-07-31 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 824 824 824 824 824
mean 1892 505 350 287 256
std 1239 271 158 116 95
min 25 15 15 11 14
1% 73 59 68 63 70
10% 99 92 94 92 96
25% 724 238 216 198 192
50% 2120 580 402 324 286
75% 2920 666 438 356 323
90% 3420 872 530 414 343
99% 4118 989 669 511 438
max 4391 1029 711 543 465
skew -0 -0 -0 -1 -1
kurt -1 -1 -1 -1 -0
mad 1066 228 132 96 77
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
me_port me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1951-07-31 1951-07-31 1951-07-31 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 824 824 824 824 824
mean 67.55 351.45 834.63 2038.13 14480.3
std 81.4 416.87 1001.71 2412.76 17836.3
min 8.61 19.24 39.1 98.06 578.4
1% 8.61 19.24 39.1 98.06 578.4
10% 11.36 43.38 99.13 230.85 1260.94
25% 16.15 58.79 135.22 331.8 1933.43
50% 26.48 167.59 389.03 921.5 4381.07
75% 86.78 526.02 1198.73 2971.8 26896.4
90% 197.77 1021.4 2381.6 5734.64 40281.7
99% 406.77 1782.62 3921.44 9833.41 69033.1
max 413.35 1787.57 4971.89 11719 80726.9
skew 1.9 1.48 1.68 1.66 1.46
kurt 3.63 1.31 2.62 2.56 1.6
mad 61.97 331.69 776.58 1876.38 14703.3
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
corr: 0.991 0.997 0.991 0.995 0.993
Average matrix:
me20-40 me80-100 ... me40-60 me60-80
[wrds, kflib]: [1.15%, 1.12%] [0.94%, 0.93%] ... [1.11%, 1.1%] [1.1%, 1.07%]
[1 rows x 5 columns]
Std Deviation matrix:
me20-40 me80-100 ... me40-60 me60-80
[wrds, kflib]: [5.53%, 5.58%] [4.1%, 4.09%] ... [5.01%, 5.12%] [4.68%, 4.82%]
[1 rows x 5 columns]
Elapsed time: 6.725 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
corr: 0.973 0.899 0.977 0.948 0.926
Average matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
[wrds, kflib]: [505, 558] [256, 291] [1892, 2160] [350, 390] [287, 324]
Std Deviation matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
[wrds, kflib]: [271, 245] [95, 59] [1239, 1340] [158, 127] [116, 81]
Elapsed time: 5.478 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1951-07-31 to 2020-02-29 ***************************
Correlation matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
corr: 0.978 0.991 0.943 0.968 0.978
Average matrix:
me20-40 ... me60-80
[wrds, kflib]: [351.45, 338.05] ... [2038.13, 1970.45]
[1 rows x 5 columns]
Std Deviation matrix:
me20-40 ... me60-80
[wrds, kflib]: [416.87, 405.33] ... [2412.76, 2347.4]
[1 rows x 5 columns]
Elapsed time: 5.629 seconds.
(10 x 1) Decile Sorts:
In [9]: sortingDim = [10]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1951-07-31 1951-07-31 ... 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 824 824 ... 824 824
mean 0.01% 0.01% ... 0.01% 0.01%
std 0.06% 0.06% ... 0.04% 0.04%
min -0.3% -0.31% ... -0.22% -0.2%
1% -0.16% -0.14% ... -0.1% -0.1%
10% -0.06% -0.06% ... -0.04% -0.04%
25% -0.02% -0.02% ... -0.02% -0.01%
50% 0.01% 0.01% ... 0.01% 0.01%
75% 0.05% 0.05% ... 0.04% 0.03%
90% 0.08% 0.08% ... 0.06% 0.05%
99% 0.17% 0.16% ... 0.11% 0.11%
max 0.31% 0.3% ... 0.18% 0.18%
skew -0.14% -0.21% ... -0.42% -0.36%
kurt 2.94% 2.56% ... 2.08% 1.6%
mad 0.04% 0.05% ... 0.03% 0.03%
[17 rows x 10 columns]
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1951-07-31 1951-07-31 ... 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 824 824 ... 824 824
mean 1485 407 ... 130 126
std 989 265 ... 49 45
min 19 6 ... 9 5
1% 33 40 ... 36 34
10% 49 48 ... 48 48
25% 563 162 ... 95 97
50% 1654 413 ... 144 141
75% 2312 567 ... 164 156
90% 2749 778 ... 179 168
99% 3173 1024 ... 225 213
max 3368 1052 ... 241 224
skew -0 0 ... -1 -1
kurt -1 -1 ... -0 -0
mad 863 214 ... 40 37
[17 rows x 10 columns]
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (10) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
me_port me0-10 me10-20 ... me80-90 me90-100
startdate 1951-07-31 1951-07-31 ... 1951-07-31 1951-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 824 824 ... 824 824
mean 40.39 154.28 ... 5062.7 24674.1
std 47.09 183.16 ... 6212.28 31341.9
min 5.59 11.11 ... 215.91 962.2
1% 5.59 11.11 ... 215.91 962.2
10% 8.17 20.29 ... 459.37 2122.34
25% 10.83 29.03 ... 684.2 3160.34
50% 17.47 69.27 ... 2044.56 6704.41
75% 48.52 228.78 ... 8061.98 46122.2
90% 114.21 464.07 ... 14395.2 66496.7
99% 213.2 834.97 ... 22621.6 113340
max 224.47 838.48 ... 32120.8 168218
skew 1.87 1.58 ... 1.68 1.72
kurt 3.22 1.8 ... 2.89 3.41
mad 35.78 144.44 ... 4894.66 25470.4
[17 rows x 10 columns]
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me30-40 me0-10 me90-100 me20-30 ... me80-90 me40-50 me60-70 me70-80
corr: 0.986 0.984 0.996 0.989 ... 0.992 0.988 0.988 0.987
[1 rows x 10 columns]
Average matrix:
me30-40 me0-10 ... me60-70 me70-80
[wrds, kflib]: [1.14%, 1.1%] [1.2%, 1.1%] ... [1.1%, 1.08%] [1.1%, 1.06%]
[1 rows x 10 columns]
Std Deviation matrix:
me30-40 me0-10 ... me60-70 me70-80
[wrds, kflib]: [5.46%, 5.51%] [6.06%, 5.98%] ... [4.84%, 4.93%] [4.65%, 4.78%]
[1 rows x 10 columns]
Elapsed time: 5.44 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1951-07-31 to 2020-02-29 **************************
Correlation matrix:
me30-40 me0-10 me90-100 me20-30 ... me80-90 me40-50 me60-70 me70-80
corr: 0.963 0.976 0.891 0.976 ... 0.903 0.951 0.923 0.925
[1 rows x 10 columns]
Average matrix:
me30-40 me0-10 ... me60-70 me70-80
[wrds, kflib]: [226, 248] [1485, 1706] ... [147, 166] [140, 158]
[1 rows x 10 columns]
Std Deviation matrix:
me30-40 me0-10 me90-100 ... me40-50 me60-70 me70-80
[wrds, kflib]: [113, 98] [989, 1101] [45, 27] ... [89, 73] [61, 44] [56, 38]
[1 rows x 10 columns]
Elapsed time: 5.427 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1951-07-31 to 2020-02-29 ***************************
Correlation matrix:
me30-40 me0-10 me90-100 me20-30 ... me80-90 me40-50 me60-70 me70-80
corr: 0.982 0.923 0.983 0.977 ... 0.978 0.97 0.982 0.979
[1 rows x 10 columns]
Average matrix:
me30-40 ... me70-80
[wrds, kflib]: [440.84, 425.56] ... [2568.75, 2498.92]
[1 rows x 10 columns]
Std Deviation matrix:
me30-40 ... me70-80
[wrds, kflib]: [519.11, 511.26] ... [3058.66, 3004.56]
[1 rows x 10 columns]
Elapsed time: 5.276 seconds.
Portfolios Sorted on Size ME
: Annual¶
In [7]: ffFreq = 'A'
In [8]: ff_A = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
(3 x 1) Sorts:
In [9]: sortingDim = [3]
In [10]: # Summary statistics
ff_A.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_A.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_A.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
me0-30 me30-70 me70-100
startdate 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 67 67 67
mean 0.16% 0.14% 0.12%
std 0.26% 0.2% 0.17%
min -0.37% -0.35% -0.37%
1% -0.36% -0.31% -0.31%
10% -0.13% -0.1% -0.09%
25% -0.05% 0.01% 0.02%
50% 0.19% 0.17% 0.13%
75% 0.33% 0.27% 0.23%
90% 0.47% 0.42% 0.33%
99% 0.77% 0.54% 0.44%
max 0.92% 0.55% 0.49%
skew 0.29% -0.18% -0.44%
kurt 0.12% -0.1% 0.15%
mad 0.21% 0.16% 0.14%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
me0-30 me30-70 me70-100
startdate 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 67 67 67
mean 2221 738 405
std 1372 317 142
min 115 181 138
1% 122 182 138
10% 149 197 147
25% 892 464 317
50% 2454 841 439
75% 3330 915 499
90% 3786 1088 539
99% 4557 1259 646
max 4577 1273 669
skew -0 -0 -1
kurt -1 -1 -0
mad 1158 265 114
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: A ************************
me_port me0-30 me30-70 me70-100
startdate 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 67 67 67
mean 99.41 878.26 10677.4
std 118.8 1003.61 12937.8
min 11.65 50.16 438.23
1% 11.73 62.5 522.79
10% 17.23 111.49 1092.48
25% 22.74 154.07 1422.71
50% 37.13 476.24 4182.93
75% 126.43 1214.5 18512.6
90% 282.15 2519.86 28357.1
99% 436.04 3760.24 50142.1
max 591.43 3937.65 54121
skew 1.85 1.42 1.46
kurt 3.56 1.08 1.58
mad 91.04 797.02 10585.3
In [11]: # annual portfolios
_, _, _, = ff_A.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_A.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1953-12-31 to 2019-12-31 **************************
Correlation matrix:
me0-30 me70-100 me30-70
corr: 0.995 0.998 0.995
Average matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [16.25%, 15.6%] [12.29%, 12.53%] [14.46%, 14.69%]
Std Deviation matrix:
me0-30 me70-100 me30-70
[wrds, kflib]: [26.13%, 25.87%] [17.07%, 16.99%] [19.88%, 20.65%]
Elapsed time: 5.846 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.53 seconds.
(5 x 1) Quintile Sorts:
In [9]: sortingDim = [5]
In [10]: # Summary statistics
ff_A.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_A.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_A.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1953-12-31 1953-12-31 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 67 67 67 67 67
mean 0.16% 0.15% 0.15% 0.14% 0.12%
std 0.28% 0.22% 0.2% 0.18% 0.17%
min -0.39% -0.34% -0.32% -0.4% -0.36%
1% -0.38% -0.32% -0.29% -0.32% -0.31%
10% -0.14% -0.12% -0.11% -0.07% -0.09%
25% -0.06% -0.02% 0.0% 0.02% 0.02%
50% 0.18% 0.17% 0.17% 0.16% 0.13%
75% 0.32% 0.28% 0.29% 0.27% 0.23%
90% 0.5% 0.43% 0.43% 0.37% 0.33%
99% 0.85% 0.62% 0.54% 0.5% 0.44%
max 1.01% 0.63% 0.6% 0.5% 0.49%
skew 0.37% 0.02% -0.11% -0.4% -0.42%
kurt 0.32% -0.29% -0.22% 0.34% 0.12%
mad 0.22% 0.18% 0.16% 0.14% 0.14%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1953-12-31 1953-12-31 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 67 67 67 67 67
mean 1936 515 358 294 262
std 1222 264 152 110 90
min 76 80 90 91 92
1% 81 83 90 92 92
10% 100 96 101 98 99
25% 758 261 233 214 207
50% 2186 589 402 323 285
75% 2992 658 436 355 323
90% 3370 869 531 405 343
99% 4010 957 623 482 416
max 4015 962 627 502 430
skew -0 -0 -0 -1 -1
kurt -1 -1 -1 -1 -0
mad 1041 219 125 89 72
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: A ************************
me_port me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1953-12-31 1953-12-31 1953-12-31 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 67 67 67 67 67
mean 68.4 358 850.01 2089.37 15007.1
std 79.87 409.31 964.15 2361.61 18082
min 8.66 21.12 44.38 106.44 598.48
1% 8.93 26.26 56.77 129.62 705.69
10% 12.98 47.99 103.7 245.61 1480.2
25% 16.28 64.64 144.69 340.59 1944.19
50% 26.31 170.06 464.82 1153.87 5693.19
75% 89.11 530.76 1204.12 2987.83 26924.5
90% 199.37 1011.88 2418.42 5756.8 40020.4
99% 290.35 1427.32 3438.1 8960.67 69321.9
max 396.9 1745.95 3838.29 9542.63 72980.1
skew 1.8 1.39 1.36 1.41 1.39
kurt 3.35 1.08 0.86 1.19 1.25
mad 61.55 329.41 770.75 1877.98 14960.5
In [11]: # annual portfolios
_, _, _, = ff_A.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_A.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1953-12-31 to 2019-12-31 **************************
Correlation matrix:
me20-40 me80-100 me0-20 me40-60 me60-80
corr: 0.993 0.998 0.994 0.994 0.991
Average matrix:
me20-40 ... me60-80
[wrds, kflib]: [15.29%, 15.21%] ... [14.17%, 14.3%]
[1 rows x 5 columns]
Std Deviation matrix:
me20-40 ... me60-80
[wrds, kflib]: [22.39%, 22.89%] ... [18.4%, 19.14%]
[1 rows x 5 columns]
Elapsed time: 5.436 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.454 seconds.
(10 x 1) Decile Sorts:
In [9]: sortingDim = [10]
In [10]: # Summary statistics
ff_A.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_A.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_A.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1953-12-31 1953-12-31 ... 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 67 67 ... 67 67
mean 0.18% 0.15% ... 0.13% 0.12%
std 0.31% 0.26% ... 0.18% 0.17%
min -0.44% -0.36% ... -0.42% -0.35%
1% -0.4% -0.36% ... -0.31% -0.3%
10% -0.15% -0.15% ... -0.1% -0.1%
25% -0.06% -0.04% ... 0.02% 0.02%
50% 0.19% 0.16% ... 0.15% 0.13%
75% 0.34% 0.32% ... 0.21% 0.23%
90% 0.52% 0.49% ... 0.36% 0.33%
99% 0.99% 0.74% ... 0.47% 0.43%
max 1.14% 0.85% ... 0.5% 0.49%
skew 0.5% 0.24% ... -0.44% -0.39%
kurt 0.53% -0.13% ... 0.58% 0.01%
mad 0.24% 0.2% ... 0.13% 0.14%
[17 rows x 10 columns]
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1953-12-31 1953-12-31 ... 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 67 67 ... 67 67
mean 1521 416 ... 133 128
std 975 261 ... 47 43
min 37 39 ... 46 42
1% 40 41 ... 46 43
10% 49 51 ... 50 49
25% 584 177 ... 104 103
50% 1723 418 ... 144 142
75% 2366 562 ... 166 157
90% 2743 789 ... 180 166
99% 3085 954 ... 216 200
max 3129 959 ... 222 208
skew -0 0 ... -1 -1
kurt -1 -1 ... -0 -0
mad 842 208 ... 37 35
[17 rows x 10 columns]
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (10) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: A ************************
me_port me0-10 me10-20 ... me80-90 me90-100
startdate 1953-12-31 1953-12-31 ... 1953-12-31 1953-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 67 67 ... 67 67
mean 40 157.27 ... 5267.35 25637.9
std 43.78 180.57 ... 6302.84 31790.4
min 6.03 11.16 ... 225.93 1042
1% 6.51 12.8 ... 264.12 1171.39
10% 8.49 22.92 ... 520.41 2430.96
25% 11.2 31.11 ... 715.65 3211.85
50% 17.21 73.12 ... 2592.55 8974.88
75% 50.27 231.63 ... 8063.43 47211.8
90% 109.03 442.67 ... 14509.7 66863.5
99% 163.79 646.97 ... 24173.2 123100
max 203.33 812.66 ... 28221.9 147577
skew 1.63 1.52 ... 1.55 1.58
kurt 2.13 1.69 ... 2.06 2.46
mad 34.27 143.62 ... 5000.12 25984.8
[17 rows x 10 columns]
In [11]: # annual portfolios
_, _, _, = ff_A.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_A.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1953-12-31 to 2019-12-31 **************************
Correlation matrix:
me30-40 me0-10 me90-100 me20-30 ... me80-90 me40-50 me60-70 me70-80
corr: 0.987 0.968 0.998 0.989 ... 0.994 0.99 0.988 0.979
[1 rows x 10 columns]
Average matrix:
me30-40 ... me70-80
[wrds, kflib]: [14.76%, 14.91%] ... [14.07%, 14.1%]
[1 rows x 10 columns]
Std Deviation matrix:
me30-40 ... me70-80
[wrds, kflib]: [21.83%, 22.8%] ... [18.14%, 18.61%]
[1 rows x 10 columns]
Elapsed time: 5.5 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.396 seconds
Portfolios Sorted on Book-to-Market BM
¶
In [6]: ffFactors, ffsortCharac, ffportCharac = [], ['BM'], ['ME', 'BM']
Portfolios Sorted on Book-to-Market BM
: Daily¶
In [7]: ffFreq = 'D'
In [8]: ff_D = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
(3 x 1) Sorts:
In [9]: sortingDim = [3]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
(5 x 1) Sorts:
In [9]: sortingDim = [5]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
(10 x 1) Sorts:
In [9]: sortingDim = [10]
In [10]: # Summary statistics
ff_D.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_D.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_D.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
In [11]: # daily portfolios
_, _, _, = ff_D.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
Portfolios Sorted on Book-to-Market BM
: Monthly¶
In [7]: ffFreq = 'M'
In [8]: ff_M = ff.FamaFrench(runQuery=runQuery, freqType=ffFreq, sortCharacsId=ffsortCharac, factorsId=ffFactors, mainCharacsId=ffportCharac)
(3 x 1) Sorts:
In [9]: sortingDim = [3]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
CRSP (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
CRSP delisted returns (monthly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
Compustat (annual) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
bm0-30 bm30-70 bm70-100
startdate 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 800 800 800
mean 0.01% 0.01% 0.01%
std 0.05% 0.04% 0.05%
min -0.24% -0.21% -0.21%
1% -0.11% -0.1% -0.13%
10% -0.05% -0.04% -0.04%
25% -0.02% -0.01% -0.01%
50% 0.01% 0.01% 0.02%
75% 0.04% 0.03% 0.04%
90% 0.06% 0.06% 0.06%
99% 0.11% 0.11% 0.12%
max 0.21% 0.18% 0.23%
skew -0.42% -0.43% -0.4%
kurt 1.86% 2.39% 2.49%
mad 0.03% 0.03% 0.04%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
bm0-30 bm30-70 bm70-100
startdate 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 800 800 800
mean 1088 1062 1045
std 634 543 603
min 29 24 24
1% 95 125 94
10% 104 136 103
25% 593 602 478
50% 1070 1198 1153
75% 1640 1446 1368
90% 1909 1645 1926
99% 2132 2040 2243
max 2187 2165 2332
skew -0 -0 -0
kurt -1 -1 -1
mad 530 454 486
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** BM (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-30 bm30-70 bm70-100
startdate 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 800 800 800
mean 3061.84 1744.29 687.78
std 4372.63 2729.59 1026.88
min 232.23 139.9 35.29
1% 239.84 142.07 35.75
10% 332.29 251.35 67.04
25% 481.72 331.11 113.76
50% 838.72 592.78 309.89
75% 5436.18 1822.69 561.97
90% 8036.61 4850.32 2080.76
99% 18618.6 8482.18 5635.78
max 27233.1 20797.4 5871.15
skew 2.66 3.96 2.7
kurt 9.49 22.15 8.22
mad 3222.53 1727.27 697.83
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-30 bm30-70 bm70-100
startdate 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29
count 800 800 800
mean 0.3 0.7 1.35
std 0.12 0.27 0.52
min 0.07 0.31 0.73
1% 0.13 0.39 0.74
10% 0.16 0.44 0.83
25% 0.21 0.51 0.97
50% 0.25 0.65 1.26
75% 0.38 0.82 1.54
90% 0.49 1.08 1.88
99% 0.7 1.8 3.61
max 0.72 1.8 3.66
skew 0.92 1.4 1.97
kurt 0.46 2.68 5.83
mad 0.1 0.21 0.37
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.997 0.992 0.989
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [0.95%, 0.94%] [1.01%, 0.99%] [1.18%, 1.18%]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [4.53%, 4.46%] [4.15%, 4.14%] [4.82%, 4.86%]
Elapsed time: 4.789 seconds.
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.986 0.973 0.984
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [1088, 1100] [1062, 1087] [1045, 1026]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [634, 588] [543, 473] [603, 531]
Elapsed time: 4.502 seconds.
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1953-07-31 to 2020-02-29 ***************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.973 0.852 0.961
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [3061.84, 2812.73] [1744.29, 1520.57] [687.78, 711.19]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [4372.63, 3968.86] [2729.59, 2041.68] [1026.88, 1036.67]
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.481 seconds.
(5 x 1) Sorts:
In [9]: sortingDim = [5]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1953-07-31 1953-07-31 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 800 800 800 800 800
mean 0.01% 0.01% 0.01% 0.01% 0.01%
std 0.05% 0.04% 0.04% 0.04% 0.05%
min -0.24% -0.25% -0.22% -0.24% -0.21%
1% -0.11% -0.11% -0.1% -0.12% -0.13%
10% -0.05% -0.04% -0.04% -0.04% -0.05%
25% -0.02% -0.02% -0.01% -0.01% -0.02%
50% 0.01% 0.01% 0.01% 0.01% 0.02%
75% 0.04% 0.04% 0.04% 0.04% 0.04%
90% 0.06% 0.06% 0.06% 0.06% 0.07%
99% 0.11% 0.11% 0.11% 0.11% 0.13%
max 0.22% 0.16% 0.17% 0.22% 0.26%
skew -0.37% -0.48% -0.44% -0.53% -0.23%
kurt 1.67% 2.16% 2.29% 3.48% 2.04%
mad 0.04% 0.03% 0.03% 0.03% 0.04%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1953-07-31 1953-07-31 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 800 800 800 800 800
mean 804 553 525 560 752
std 491 284 270 301 445
min 19 15 14 13 16
1% 65 63 63 63 64
10% 69 69 68 68 69
25% 405 343 290 281 325
50% 784 627 589 627 836
75% 1246 767 723 715 1007
90% 1464 844 798 934 1399
99% 1656 1078 1044 1178 1655
max 1692 1155 1133 1235 1746
skew -0 -0 -0 -0 -0
kurt -1 -1 -1 -1 -1
mad 414 238 224 243 362
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** BM (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1953-07-31 1953-07-31 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 800 800 800 800 800
mean 3295.4 2528.11 1600.91 1099.05 538.89
std 5150.17 4072.37 2048.53 1453.59 782.87
min 209.09 177.45 151.3 69.07 26.42
1% 217.28 181.17 152.36 70.26 26.69
10% 350.7 263.06 217 128.15 48.26
25% 542.22 366 306.52 212.81 91.58
50% 839.15 733.43 600.21 530.33 208.56
75% 5751.78 2940.28 1918.5 1065.85 447.98
90% 7621.09 7368.07 4642.98 3358.62 1841.48
99% 20946.8 12469.8 7983.8 8305.23 3417.73
max 37614.7 30047.6 8086.98 8495.83 3588.63
skew 3.7 3.69 1.78 2.56 2.11
kurt 19.18 19.37 2.18 8.12 3.68
mad 3484.21 2633.91 1535.61 1017.34 559.67
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1953-07-31 1953-07-31 1953-07-31 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 2020-02-29 2020-02-29 2020-02-29
count 800 800 800 800 800
mean 0.25 0.51 0.71 0.96 1.6
std 0.11 0.2 0.27 0.35 0.67
min 0.06 0.26 0.35 0.54 0.82
1% 0.11 0.26 0.4 0.54 0.83
10% 0.13 0.31 0.45 0.62 0.96
25% 0.18 0.36 0.52 0.7 1.17
50% 0.21 0.48 0.67 0.89 1.5
75% 0.31 0.61 0.83 1.11 1.81
90% 0.42 0.8 1.08 1.46 2.19
99% 0.54 1.32 1.83 2.5 4.45
max 0.55 1.32 1.83 2.5 5.31
skew 0.8 1.41 1.45 1.63 2.49
kurt -0.17 2.71 2.99 3.81 9.12
mad 0.09 0.15 0.2 0.26 0.45
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm80-100 bm20-40 bm0-20 bm40-60 bm60-80
corr: 0.979 0.989 0.996 0.982 0.97
Average matrix:
bm80-100 bm20-40 ... bm40-60 bm60-80
[wrds, kflib]: [1.3%, 1.21%] [0.96%, 0.96%] ... [1.03%, 1.06%] [1.01%, 1.04%]
[1 rows x 5 columns]
Std Deviation matrix:
bm80-100 bm20-40 ... bm40-60 bm60-80
[wrds, kflib]: [5.12%, 5.22%] [4.39%, 4.28%] ... [4.19%, 4.15%] [4.47%, 4.47%]
[1 rows x 5 columns]
Elapsed time: 4.899 seconds.
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm80-100 bm20-40 bm0-20 bm40-60 bm60-80
corr: 0.988 0.973 0.989 0.976 0.969
Average matrix:
bm80-100 bm20-40 bm0-20 bm40-60 bm60-80
[wrds, kflib]: [752, 733] [553, 567] [804, 807] [525, 537] [560, 569]
Std Deviation matrix:
bm80-100 bm20-40 bm0-20 bm40-60 bm60-80
[wrds, kflib]: [445, 397] [284, 251] [491, 459] [270, 235] [301, 262]
Elapsed time: 4.74 seconds.
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1953-07-31 to 2020-02-29 ***************************
Correlation matrix:
bm80-100 bm20-40 bm0-20 bm40-60 bm60-80
corr: 0.966 0.89 0.941 0.974 0.924
Average matrix:
bm80-100 ... bm60-80
[wrds, kflib]: [538.89, 559.61] ... [1099.05, 1145.39]
[1 rows x 5 columns]
Std Deviation matrix:
bm80-100 ... bm60-80
[wrds, kflib]: [782.87, 823.04] ... [1453.59, 1593.26]
[1 rows x 5 columns]
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.758 seconds.
(10 x 1) Sorts:
In [9]: sortingDim = [10]
In [10]: # Summary statistics
ff_M.getFamaFrenchStats(dataType='Returns', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim, pRetType='vw')
ff_M.getFamaFrenchStats(dataType='NumFirms', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
ff_M.getFamaFrenchStats(dataType='Characs', dataFreq=ffFreq, dt_start=startDate, dt_end=endDate, pDim=sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1953-07-31 1953-07-31 ... 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 800 800 ... 800 800
mean 0.01% 0.01% ... 0.01% 0.01%
std 0.05% 0.05% ... 0.05% 0.06%
min -0.23% -0.25% ... -0.2% -0.23%
1% -0.12% -0.11% ... -0.13% -0.16%
10% -0.05% -0.05% ... -0.05% -0.06%
25% -0.02% -0.02% ... -0.02% -0.02%
50% 0.01% 0.01% ... 0.02% 0.02%
75% 0.04% 0.04% ... 0.04% 0.05%
90% 0.07% 0.06% ... 0.07% 0.07%
99% 0.12% 0.11% ... 0.13% 0.16%
max 0.23% 0.19% ... 0.22% 0.31%
skew -0.28% -0.44% ... -0.2% -0.24%
kurt 1.42% 1.73% ... 1.66% 2.9%
mad 0.04% 0.04% ... 0.04% 0.04%
[17 rows x 10 columns]
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1953-07-31 1953-07-31 ... 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 800 800 ... 800 800
mean 483 321 ... 338 415
std 331 173 ... 202 253
min 5 14 ... 8 8
1% 32 32 ... 32 32
10% 34 35 ... 34 35
25% 209 194 ... 138 182
50% 422 359 ... 370 451
75% 799 459 ... 443 579
90% 963 537 ... 631 682
99% 1139 599 ... 807 989
max 1207 620 ... 894 1026
skew 0 -0 ... 0 0
kurt -1 -1 ... -1 -1
mad 282 143 ... 163 206
[17 rows x 10 columns]
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** BM (10) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1953-07-31 1953-07-31 ... 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 800 800 ... 800 800
mean 3577.64 3098.58 ... 710.14 391.7
std 6269.73 4712.12 ... 986.12 611.44
min 147.22 205.62 ... 34.08 18.17
1% 153.7 205.62 ... 34.45 18.17
10% 358.77 336.39 ... 61.72 29.48
25% 554.07 468.85 ... 101.7 71.46
50% 1077.72 793.22 ... 307.38 129.21
75% 5465.65 5255.08 ... 676.31 261.6
90% 8527.31 7991.98 ... 2391.08 1501.81
99% 22960.3 18812.6 ... 4506.64 2410.72
max 51165.5 32775.2 ... 4664.76 2498.37
skew 4.89 3.26 ... 2.08 2.08
kurt 31.93 15.1 ... 3.73 3.07
mad 3762.89 3298.7 ... 695.71 432.34
[17 rows x 10 columns]
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1953-07-31 1953-07-31 ... 1953-07-31 1953-07-31
enddate 2020-02-29 2020-02-29 ... 2020-02-29 2020-02-29
count 800 800 ... 800 800
mean 0.19 0.34 ... 1.29 2.05
std 0.09 0.13 ... 0.47 0.92
min 0.01 0.09 ... 0.71 1
1% 0.07 0.16 ... 0.72 1.01
10% 0.09 0.2 ... 0.82 1.21
25% 0.13 0.24 ... 0.95 1.42
50% 0.16 0.3 ... 1.22 1.87
75% 0.24 0.41 ... 1.43 2.31
90% 0.33 0.54 ... 1.85 2.81
99% 0.39 0.8 ... 3.56 5.67
max 0.39 0.8 ... 3.57 7.55
skew 0.72 0.96 ... 1.97 2.91
kurt -0.29 0.71 ... 6.53 12.49
mad 0.07 0.11 ... 0.34 0.6
[17 rows x 10 columns]
In [11]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios(kfType='Returns', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim, kfRetType='vw')
_, _, _, = ff_M.comparePortfolios(kfType='NumFirms', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
_, _, _, = ff_M.comparePortfolios(kfType='Characs', kfFreq=ffFreq, dt_start=startDate, dt_end=endDate, kfDim=sortingDim)
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm0-10 bm20-30 bm10-20 bm80-90 ... bm60-70 bm70-80 bm90-100 bm50-60
corr: 0.991 0.974 0.982 0.96 ... 0.943 0.954 0.973 0.955
[1 rows x 10 columns]
Average matrix:
bm0-10 bm20-30 ... bm90-100 bm50-60
[wrds, kflib]: [0.91%, 0.92%] [0.98%, 0.98%] ... [1.3%, 1.21%] [1.07%, 1.08%]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 bm20-30 ... bm90-100 bm50-60
[wrds, kflib]: [4.92%, 4.86%] [4.47%, 4.36%] ... [5.76%, 6.06%] [4.37%, 4.22%]
[1 rows x 10 columns]
Elapsed time: 4.8 seconds.
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1953-07-31 to 2020-02-29 **************************
Correlation matrix:
bm0-10 bm20-30 bm10-20 bm80-90 ... bm60-70 bm70-80 bm90-100 bm50-60
corr: 0.993 0.972 0.976 0.983 ... 0.962 0.967 0.988 0.972
[1 rows x 10 columns]
Average matrix:
bm0-10 bm20-30 ... bm90-100 bm50-60
[wrds, kflib]: [483, 482] [284, 293] ... [415, 400] [263, 269]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 bm20-30 ... bm90-100 bm50-60
[wrds, kflib]: [331, 311] [149, 134] ... [253, 228] [136, 118]
[1 rows x 10 columns]
Elapsed time: 4.741 seconds.
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1953-07-31 to 2020-02-29 ***************************
Correlation matrix:
bm0-10 bm20-30 bm10-20 bm80-90 ... bm60-70 bm70-80 bm90-100 bm50-60
corr: 0.918 0.965 0.925 0.965 ... 0.887 0.946 0.965 0.97
[1 rows x 10 columns]
Average matrix:
bm0-10 ... bm50-60
[wrds, kflib]: [3577.64, 3031.17] ... [1502.36, 1360.03]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 ... bm50-60
[wrds, kflib]: [6269.73, 4359.65] ... [1925.28, 1776.52]
[1 rows x 10 columns]
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.746 seconds.
Portfolios Sorted on Book-to-Market BM
: Annual¶
(3 x 1) Sorts:
TODO
(5 x 1) Sorts:
TODO
(10 x 1) Sorts:
TODO
Portfolios Sorted on Operating Profitability OP
¶
Portfolios Sorted on Operating Profitability OP
: Monthly¶
(3 x 1) Sorts:
TODO
(5 x 1) Sorts:
TODO
(10 x 1) Sorts:
TODO
Portfolios Sorted on Operating Profitability OP
: Annual¶
(3 x 1) Sorts:
TODO
(5 x 1) Sorts:
TODO
(10 x 1) Sorts:
TODO
Portfolios Sorted on Investment INV
¶
Portfolios Sorted on Investment INV
: Monthly¶
(3 x 1) Sorts:
TODO
(5 x 1) Sorts:
TODO
(10 x 1) Sorts:
TODO
Portfolios Sorted on Investment INV
: Annual¶
(3 x 1) Sorts:
TODO
(5 x 1) Sorts:
TODO
(10 x 1) Sorts:
TODO
Portfolios Sorted on Size ME
& Book-to-Market BM
¶
TODO
Portfolios Sorted on Size ME
& Operating Profitability OP
¶
TODO
Portfolios Sorted on Size ME
& Investment INV
¶
TODO
Portfolios Sorted on Book-to-Market BM
& Operating Profitability OP
¶
TODO
Portfolios Sorted on Book-to-Market BM
& Investment INV
¶
TODO
Portfolios Sorted on Operating Profitability OP
& Investment INV
¶
TODO