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 os
In [2]: import datetime as dt
In [3]: import famafrench.famafrench as ff
A required attribute is the absolute path directory where pickled datafiles will be saved. Starting from the current working directory, we will create a folder pickled_db
and save all pickled files there. To do that, let’s define the string variable pickled_dir
as follows:
In [4]: pickled_dir = os.getcwd() + '/pickled_db/'
Let’s create all our datasets from 1960 to the present, or the most recent date for which there is stock returns data in CRSP and fundamentals data in Compustat. We set runQuery
to True
and query all datafiles directly from wrds-cloud.
In [5]: startDate = dt.date(1960, 1, 1)
In [6]: endDate = dt.date.today()
In [7]: runQuery = True
Fama-French 3 Factors¶
Fama-French 3 Factors : Daily¶
In [8]: ffFreq = 'D'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [11]: ff3_D = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors)
In [12]: # Summary statistics
ff3_D.getFamaFrenchStats('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 [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 1960-01-04 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164 15164
mean 0.04% 0.02% 0.0% 0.01%
std 0.99% 0.99% 0.52% 0.52%
min -17.45% -17.47% -11.66% -6.05%
1% -2.67% -2.68% -1.38% -1.41%
10% -0.99% -1.01% -0.57% -0.49%
25% -0.39% -0.41% -0.26% -0.23%
50% 0.07% 0.05% 0.02% 0.01%
75% 0.5% 0.49% 0.28% 0.24%
90% 1.03% 1.01% 0.56% 0.53%
99% 2.66% 2.64% 1.29% 1.55%
max 11.36% 11.36% 6.84% 4.91%
skew -0.59% -0.58% -0.94% 0.11%
kurt 17.5% 17.49% 24.92% 12.26%
mad 0.66% 0.66% 0.37% 0.34%
[17 rows x 4 columns]
In [13]: # 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: 1960-01-04 to 2020-03-31 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml
corr: 1.0 1.0 0.967 0.947
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [0.04, 0.04] [0.02, 0.02] [0.0, 0.0] [0.01, 0.01]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [0.99, 0.99] [0.99, 0.99] [0.52, 0.52] [0.52, 0.52]
Elapsed time: 179.776 seconds.
Fama-French 3 Factors : Weekly¶
In [8]: ffFreq = 'W'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [11]: ff3_W = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors)
In [12]: # Summary statistics
ff3_W.getFamaFrenchStats('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. 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%|██████████| 2/2 [03:10<00:00, 95.45s/it]
Historical risk-free interest rate (weekly) dataset currently NOT saved locally. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: W ************************
mkt mkt-rf smb hml
startdate 1960-01-08 1960-01-08 1960-01-08 1960-01-08
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 3144 3144 3144 3144
mean 0.2% 0.12% 0.02% 0.06%
std 2.18% 2.18% 1.2% 1.23%
min -17.97% -17.99% -9.95% -9.12%
1% -6.28% -6.39% -3.09% -3.18%
10% -2.25% -2.32% -1.32% -1.27%
25% -0.94% -1.04% -0.65% -0.58%
50% 0.36% 0.28% 0.04% 0.03%
75% 1.43% 1.36% 0.72% 0.67%
90% 2.47% 2.38% 1.37% 1.37%
99% 5.63% 5.62% 2.87% 3.52%
max 13.58% 13.47% 6.97% 10.26%
skew -0.58% -0.58% -0.33% 0.38%
kurt 5.9% 5.86% 5.4% 7.11%
mad 1.56% 1.56% 0.87% 0.86%
[17 rows x 4 columns]
In [13]: # Compare weekly Fama-French 3 factors constructed here to those provided in Ken French's online library
_, _, _, = ff3_W.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [03:03<00:00, 91.92s/it]
*********************************** Factor Returns: 1960-01-08 to 2020-03-27 ***********************************
*********************** Observation frequency: W ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml
corr: 1.0 1.0 0.975 0.964
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [0.2, 0.2] [0.12, 0.12] [0.03, 0.03] [0.06, 0.06]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [2.18, 2.18] [2.18, 2.18] [1.2, 1.2] [1.23, 1.23]
Elapsed time: 154.54 seconds.
Fama-French 3 Factors : Monthly¶
In [8]: ffFreq = 'M'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [11]: ff3_M = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors)
In [12]: # Summary statistics
ff3_M.getFamaFrenchStats('Factors', ffFreq, startDate, 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%|██████████| 2/2 [00:03<00:00, 1.88s/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 smb hml
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723
mean 0.87% 0.51% 0.15% 0.28%
std 4.39% 4.41% 3.01% 2.87%
min -22.66% -23.26% -17.42% -11.31%
1% -10.86% -11.6% -6.5% -8.42%
10% -4.54% -5.01% -3.26% -2.79%
25% -1.68% -1.97% -1.55% -1.43%
50% 1.25% 0.92% 0.07% 0.28%
75% 3.66% 3.35% 1.84% 1.63%
90% 5.74% 5.29% 3.41% 3.62%
99% 11.17% 10.85% 8.04% 7.84%
max 16.6% 16.09% 21.12% 12.54%
skew -0.53% -0.55% 0.2% 0.01%
kurt 1.87% 1.86% 6.19% 2.0%
mad 3.33% 3.35% 2.16% 2.1%
[17 rows x 4 columns]
In [13]: # Compare monthly Fama-French 3 factors constructed here to those provided in Ken French's online library
_, _, _, = ff3_M.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [00:05<00:00, 2.79s/it]
*********************************** Factor Returns: 1960-01-31 to 2020-03-31 ***********************************
*********************** Observation frequency: M ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml
corr: 1.0 1.0 0.978 0.976
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [0.87, 0.87] [0.51, 0.51] [0.15, 0.15] [0.28, 0.28]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [4.39, 4.39] [4.41, 4.41] [3.01, 3.01] [2.87, 2.87]
Elapsed time: 5.372 seconds.
Fama-French 3 Factors : Annual¶
In [8]: ffFreq = 'A'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML']
In [11]: ff3_A = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors)
In [12]: # Summary statistics
ff3_A.getFamaFrenchStats('Factors', ffFreq, startDate, 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.08s/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 1960-12-31 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 60 60 60 60
mean 11.6% 7.04% 2.35% 4.62%
std 17.13% 17.41% 12.63% 13.58%
min -36.65% -38.24% -25.74% -30.85%
1% -31.39% -36.77% -23.89% -27.43%
10% -11.0% -17.55% -10.61% -10.81%
25% 0.05% -4.63% -7.29% -4.66%
50% 14.93% 10.71% 0.42% 6.44%
75% 24.45% 20.22% 9.16% 13.44%
90% 31.84% 28.21% 17.03% 20.83%
99% 37.38% 33.57% 34.03% 33.77%
max 38.23% 35.22% 44.45% 47.04%
skew -0.63% -0.63% 0.61% 0.06%
kurt -0.04% -0.16% 1.1% 0.85%
mad 13.91% 14.2% 9.88% 10.71%
[17 rows x 4 columns]
In [13]: # Compare annual Fama-French 3 factors constructed here to those provided in Ken French's online library
_, _, _, = ff3_A.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 2/2 [00:03<00:00, 1.95s/it]
*********************************** Factor Returns: 1960-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.993 0.971
Fama-French factors: Average matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [11.6, 11.6] [7.04, 7.04] [2.29, 2.29] [4.77, 4.77]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf smb hml
[wrds, kflib]: [17.13, 17.13] [17.41, 17.41] [12.66, 12.66] [13.53, 13.53]
Elapsed time: 5.833 seconds.
Fama-French 5 Factors¶
Fama-French 5 Factors : Daily¶
In [8]: ffFreq = 'D'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [11]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [12]: ff5_D = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ff5_D.getFamaFrenchStats('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. 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%|██████████| 5/5 [08:46<00:00, 105.24s/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 ... rmw cma
startdate 1960-01-04 1960-01-04 ... 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 15164 15164 ... 15164 15164
mean 0.04% 0.02% ... 0.01% 0.01%
std 0.99% 0.99% ... 0.42% 0.35%
min -17.45% -17.47% ... -8.31% -5.07%
1% -2.67% -2.68% ... -1.13% -0.94%
10% -0.99% -1.01% ... -0.36% -0.35%
25% -0.39% -0.41% ... -0.17% -0.17%
50% 0.07% 0.05% ... 0.01% 0.01%
75% 0.5% 0.49% ... 0.19% 0.18%
90% 1.03% 1.01% ... 0.4% 0.38%
99% 2.66% 2.64% ... 1.17% 0.95%
max 11.36% 11.36% ... 7.97% 3.69%
skew -0.59% -0.58% ... -0.02% -0.62%
kurt 17.5% 17.49% ... 35.09% 13.1%
mad 0.66% 0.66% ... 0.26% 0.24%
[17 rows x 6 columns]
In [14]: # Compare daily Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_D.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:14<00:00, 2.84s/it]
*********************************** Factor Returns: 1963-07-01 to 2020-03-31 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml rmw cma
corr: 1.0 1.0 0.965 0.954 0.876 0.921
Fama-French factors: Average matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [0.04, 0.04] [0.02, 0.02] ... [0.01, 0.01] [0.01, 0.01]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [1.01, 1.01] [1.01, 1.01] ... [0.43, 0.43] [0.35, 0.35]
[1 rows x 6 columns]
Elapsed time: 600.35 seconds.
Fama-French 5 Factors : Weekly¶
In [8]: ffFreq = 'W'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [11]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [12]: ff5_W = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ff5_W.getFamaFrenchStats('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%|██████████| 5/5 [08:11<00:00, 98.29s/it]
Historical risk-free interest rate (weekly) dataset currently NOT saved locally w/ required dates. Querying from wrds-cloud...
*********************************** Summary Statistics: Fama-French Factors ***********************************
*********************** Observation frequency: W ************************
mkt mkt-rf ... rmw cma
startdate 1960-01-08 1960-01-08 ... 1960-01-08 1960-01-08
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 3144 3144 ... 3144 3144
mean 0.2% 0.12% ... 0.05% 0.04%
std 2.18% 2.18% ... 1.0% 0.87%
min -17.97% -17.99% ... -13.09% -6.27%
1% -6.28% -6.39% ... -2.68% -2.39%
10% -2.25% -2.32% ... -0.88% -0.9%
25% -0.94% -1.04% ... -0.4% -0.43%
50% 0.36% 0.28% ... 0.05% 0.03%
75% 1.43% 1.36% ... 0.5% 0.48%
90% 2.47% 2.38% ... 0.98% 1.01%
99% 5.63% 5.62% ... 2.83% 2.52%
max 13.58% 13.47% ... 9.24% 5.77%
skew -0.58% -0.58% ... -0.56% 0.06%
kurt 5.9% 5.86% ... 22.07% 4.68%
mad 1.56% 1.56% ... 0.64% 0.62%
[17 rows x 6 columns]
Fama-French 5 Factors : Monthly¶
In [8]: ffFreq = 'M'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [11]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [12]: ff5_M = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ff5_M.getFamaFrenchStats('Factors', ffFreq, startDate, 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 ... rmw cma
startdate 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 0.87% 0.51% ... 0.22% 0.18%
std 4.39% 4.41% ... 2.3% 1.8%
min -22.66% -23.26% ... -19.17% -12.38%
1% -10.86% -11.6% ... -6.04% -4.07%
10% -4.54% -5.01% ... -2.0% -1.9%
25% -1.68% -1.97% ... -0.84% -0.94%
50% 1.25% 0.92% ... 0.2% 0.08%
75% 3.66% 3.35% ... 1.32% 1.35%
90% 5.74% 5.29% ... 2.44% 2.32%
99% 11.17% 10.85% ... 6.41% 4.92%
max 16.6% 16.09% ... 13.14% 8.03%
skew -0.53% -0.55% ... -0.78% -0.16%
kurt 1.87% 1.86% ... 12.73% 3.79%
mad 3.33% 3.35% ... 1.53% 1.37%
[17 rows x 6 columns]
In [14]: # Compare monthly Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_M.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 5/5 [00:14<00:00, 2.84s/it]
*********************************** Factor Returns: 1963-07-31 to 2020-03-31 ***********************************
*********************** Observation frequency: M ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf smb hml rmw cma
corr: 1.0 1.0 0.974 0.98 0.948 0.927
Fama-French factors: Average matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [0.88, 0.88] [0.51, 0.51] ... [0.23, 0.23] [0.19, 0.19]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [4.41, 4.41] [4.42, 4.42] ... [2.33, 2.33] [1.83, 1.83]
[1 rows x 6 columns]
Elapsed time: 17.519 seconds.
Fama-French 5 Factors : Annual¶
In [8]: ffFreq = 'A'
In [9]: ffsortCharac = ['ME', 'BM']
In [10]: ffFactors = ['MKT-RF', 'SMB', 'HML', 'RMW', 'CMA']
In [11]: ffportCharac = ['ME', 'BM', 'OP', 'INV']
In [12]: ff5_A = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ff5_A.getFamaFrenchStats('Factors', ffFreq, startDate, 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 hml
startdate 1960-12-31 1960-12-31 ... 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 60 60 ... 60 60
mean 11.6% 7.04% ... 3.19% 2.86%
std 17.13% 17.41% ... 8.99% 8.81%
min -36.65% -38.24% ... -24.9% -15.01%
1% -31.39% -36.77% ... -23.01% -14.98%
10% -11.0% -17.55% ... -5.68% -7.29%
25% 0.05% -4.63% ... -1.1% -3.07%
50% 14.93% 10.71% ... 3.04% 2.12%
75% 24.45% 20.22% ... 8.76% 8.5%
90% 31.84% 28.21% ... 14.13% 13.71%
99% 37.38% 33.57% ... 22.08% 25.27%
max 38.23% 35.22% ... 22.32% 26.0%
skew -0.63% -0.63% ... -0.52% 0.37%
kurt -0.04% -0.16% ... 1.39% 0.22%
mad 13.91% 14.2% ... 6.72% 6.88%
[17 rows x 6 columns]
In [14]: # Compare annual Fama-French 5 factors constructed here to those provided in Ken French's online library
_, _, _, = ff5_A.comparePortfolios('Factors', ffFreq, startDate, 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: 1964-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.997 0.977 0.989 0.984
Fama-French factors: Average matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [11.73, 11.73] [7.04, 7.04] ... [3.19, 3.19] [3.15, 3.15]
[1 rows x 6 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... rmw cma
[wrds, kflib]: [17.28, 17.28] [17.57, 17.57] ... [9.25, 9.25] [8.97, 8.97]
[1 rows x 6 columns]
Elapsed time: 17.418 seconds.
Momentum, Short-Term Reversal, and Long-Term Reversal Factor¶
MOM
, ST_Rev
, and LT_Rev
: Daily¶
In [8]: ffFreq = 'D'
In [9]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [10]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [11]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [12]: ffprior_D = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ffprior_D.getFamaFrenchStats('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. 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 [22:01<00:00, 330.45s/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 mom st_rev lt_rev
startdate 1960-01-04 1960-01-04 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164 15164 15164
mean 0.04% 0.02% 0.03% 0.1% 0.01%
std 0.99% 0.99% 0.7% 0.72% 0.46%
min -17.45% -17.47% -7.79% -10.53% -7.28%
1% -2.67% -2.68% -2.1% -1.69% -1.17%
10% -0.99% -1.01% -0.65% -0.5% -0.46%
25% -0.39% -0.41% -0.24% -0.18% -0.22%
50% 0.07% 0.05% 0.06% 0.08% -0.0%
75% 0.5% 0.49% 0.34% 0.35% 0.23%
90% 1.03% 1.01% 0.68% 0.7% 0.49%
99% 2.66% 2.64% 1.93% 2.22% 1.23%
max 11.36% 11.36% 6.9% 18.29% 6.66%
skew -0.59% -0.58% -0.79% 2.31% -0.51%
kurt 17.5% 17.49% 13.46% 56.39% 18.11%
mad 0.66% 0.66% 0.45% 0.42% 0.31%
[17 rows x 5 columns]
In [14]: # Compare daily Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_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. 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 [20:29<00:00, 307.45s/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 [20:02<00:00, 300.70s/it]
*********************************** Factor Returns: 1960-01-04 to 2020-03-31 ***********************************
*********************** Observation frequency: D ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf mom st_rev lt_rev
corr: 1.0 1.0 0.965 0.95 0.9
Fama-French factors: Average matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [0.04, 0.04] [0.02, 0.02] ... [0.1, 0.1] [0.01, 0.01]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [0.99, 0.99] [0.99, 0.99] ... [0.72, 0.72] [0.46, 0.46]
[1 rows x 5 columns]
Elapsed time: 1214.541 seconds.
MOM
, ST_Rev
, and LT_Rev
: Monthly¶
In [8]: ffFreq = 'M'
In [9]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [10]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [11]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [12]: ffprior_M = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ffprior_M.getFamaFrenchStats('Factors', ffFreq, startDate, 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:23<00:00, 5.82s/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 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 0.87% 0.51% 0.67% 0.53% 0.18%
std 4.39% 4.41% 4.21% 3.05% 2.6%
min -22.66% -23.26% -33.02% -14.26% -14.31%
1% -10.86% -11.6% -10.38% -8.94% -5.91%
10% -4.54% -5.01% -3.65% -2.36% -2.6%
25% -1.68% -1.97% -1.01% -1.01% -1.34%
50% 1.25% 0.92% 0.71% 0.33% 0.06%
75% 3.66% 3.35% 2.71% 1.88% 1.59%
90% 5.74% 5.29% 4.87% 3.8% 3.23%
99% 11.17% 10.85% 10.64% 10.33% 7.21%
max 16.6% 16.09% 28.68% 16.74% 15.64%
skew -0.53% -0.55% -0.77% 0.35% 0.2%
kurt 1.87% 1.86% 11.21% 5.39% 4.84%
mad 3.33% 3.35% 2.8% 2.08% 1.89%
[17 rows x 5 columns]
In [14]: # Compare monthly Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_M.comparePortfolios('Factors', ffFreq, startDate, 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:21<00:00, 5.37s/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:21<00:00, 5.26s/it]
*********************************** Factor Returns: 1960-01-31 to 2020-03-31 ***********************************
*********************** Observation frequency: M ************************
Fama-French factors: Correlation matrix:
mkt mkt-rf mom st_rev lt_rev
corr: 1.0 1.0 0.973 0.983 0.954
Fama-French factors: Average matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [0.87, 0.87] [0.51, 0.51] ... [0.53, 0.53] [0.2, 0.2]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [4.39, 4.39] [4.41, 4.41] ... [3.05, 3.05] [2.6, 2.6]
[1 rows x 5 columns]
Elapsed time: 22.634 seconds.
MOM
, ST_Rev
, and LT_Rev
: Annual¶
In [8]: ffFreq = 'A'
In [9]: ffsortCharac = ['ME', 'PRIOR_2_12']
In [10]: ffFactors = ['MKT-RF', 'MOM', 'ST_Rev', 'LT_Rev']
In [11]: ffportCharac = ['ME', 'PRIOR_2_12', 'PRIOR_1_1', 'PRIOR_13_60']
In [12]: ffprior_A = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
In [13]: # Summary statistics
ffprior_A.getFamaFrenchStats('Factors', ffFreq, startDate, 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 1960-12-31 1960-12-31 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 60 60 60 60 60
mean 11.6% 7.04% 7.56% 7.12% 2.63%
std 17.13% 17.41% 17.78% 11.38% 12.14%
min -36.65% -38.24% -79.66% -17.67% -19.66%
1% -31.39% -36.77% -47.62% -16.26% -19.01%
10% -11.0% -17.55% -10.03% -4.68% -11.84%
25% 0.05% -4.63% 1.42% 0.86% -7.6%
50% 14.93% 10.71% 9.48% 5.86% 2.77%
75% 24.45% 20.22% 16.5% 12.94% 8.95%
90% 31.84% 28.21% 24.81% 18.13% 17.85%
99% 37.38% 33.57% 37.37% 43.04% 29.23%
max 38.23% 35.22% 38.24% 44.99% 31.03%
skew -0.63% -0.63% -2.03% 0.91% 0.34%
kurt -0.04% -0.16% 8.87% 2.55% -0.37%
mad 13.91% 14.2% 11.86% 8.09% 9.76%
[17 rows x 5 columns]
In [14]: # Compare annual Fama-French factors based on prior returns constructed here to those provided in Ken French's online library
_, _, _, = ffprior_A.comparePortfolios('Factors', ffFreq, startDate, endDate)
Constructing Fama-French return factor(s): 100%|██████████| 4/4 [00:30<00:00, 7.54s/it]
*********************************** Factor Returns: 1960-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.991 0.972 0.987
Fama-French factors: Average matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [11.6, 11.6] [7.04, 7.04] ... [7.12, 7.12] [2.63, 2.63]
[1 rows x 5 columns]
Fama-French factors: Std Deviation matrix:
mkt mkt-rf ... st_rev lt_rev
[wrds, kflib]: [17.13, 17.13] [17.41, 17.41] ... [11.38, 11.38] [12.14, 12.14]
[1 rows x 5 columns]
Elapsed time: 23.845 seconds.
Portfolios Sorted on Size ME
¶
In [8]: ffFactors, ffsortCharac, ffportCharac = [], ['ME'], ['ME']
Portfolios Sorted on Size ME
: Daily¶
In [9]: ffFreq = 'D'
In [10]: ff_D = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
(3 x 1) Sorts:
In [11]: sortingDim = [3]
In [12]: # Summary statistics
ff_D.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_D.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_D.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
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...
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: D ************************
me0-30 me30-70 me70-100
startdate 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164
mean 0.0% 0.0% 0.0%
std 0.01% 0.01% 0.01%
min -0.15% -0.17% -0.19%
1% -0.03% -0.03% -0.03%
10% -0.01% -0.01% -0.01%
25% -0.0% -0.0% -0.0%
50% 0.0% 0.0% 0.0%
75% 0.01% 0.01% 0.01%
90% 0.01% 0.01% 0.01%
99% 0.03% 0.03% 0.03%
max 0.14% 0.14% 0.12%
skew -0.74% -0.78% -0.61%
kurt 16.36% 18.26% 19.49%
mad 0.01% 0.01% 0.01%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: D ************************
me0-30 me30-70 me70-100
startdate 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164
mean 2471 802 434
std 1252 277 122
min 31 29 20
1% 31 29 20
10% 491 343 240
25% 1335 772 407
50% 2540 852 453
75% 3497 933 502
90% 3971 1140 561
99% 4741 1359 686
max 5011 1439 726
skew -0 -1 -1
kurt -1 0 1
mad 1018 204 88
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: D ************************
me_port me0-30 me30-70 me70-100
startdate 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164
mean 114.56 998.93 12145.2
std 128.13 1057.04 13798.3
min 8.81 74.04 846.91
1% 11.73 96.69 1096.48
10% 19.55 138.81 1360.57
25% 27.26 177.1 1530.24
50% 43.04 539.11 5487.16
75% 189.09 1579.63 20402.3
90% 307.47 2663.05 32653.4
99% 569.59 4266.21 62493.6
max 642.7 4841.5 75448.5
skew 1.57 1.34 1.5
kurt 1.96 0.97 2.16
mad 101.81 846.66 11251.2
In [13]: # daily portfolios
_, _, _, = ff_D.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
*********************************** ME (3) ************************************
*********************** Observation frequency: D ************************
************************* Returns: 1960-01-04 to 2020-03-31 **************************
Correlation matrix:
me0-30 me30-70 me70-100
corr: 0.988 0.993 0.997
Average matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [0.05%, 0.05%] [0.05%, 0.05%] [0.04%, 0.04%]
Std Deviation matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [1.08%, 1.05%] [1.05%, 1.04%] [1.01%, 1.01%]
Elapsed time: 2818.093 seconds.
(5 x 1) Quintile Sorts:
In [11]: sortingDim = [5]
In [12]: # Summary statistics
ff_D.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_D.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_D.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: D ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-01-04 1960-01-04 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164 15164 15164
mean 0.0% 0.0% 0.0% 0.0% 0.0%
std 0.01% 0.01% 0.01% 0.01% 0.01%
min -0.15% -0.17% -0.18% -0.16% -0.19%
1% -0.03% -0.03% -0.03% -0.03% -0.03%
10% -0.01% -0.01% -0.01% -0.01% -0.01%
25% -0.0% -0.0% -0.0% -0.0% -0.0%
50% 0.0% 0.0% 0.0% 0.0% 0.0%
75% 0.01% 0.01% 0.01% 0.01% 0.01%
90% 0.01% 0.01% 0.01% 0.01% 0.01%
99% 0.03% 0.03% 0.03% 0.03% 0.03%
max 0.13% 0.15% 0.14% 0.12% 0.12%
skew -0.78% -0.58% -0.77% -0.63% -0.6%
kurt 17.15% 15.76% 17.76% 14.26% 19.82%
mad 0.01% 0.01% 0.01% 0.01% 0.01%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: D ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-01-04 1960-01-04 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164 15164 15164
mean 2158 565 388 316 280
std 1118 237 133 95 77
min 25 15 15 11 14
1% 25 15 15 11 14
10% 399 179 174 161 161
25% 1077 484 375 304 262
50% 2237 598 412 330 288
75% 3074 701 450 362 326
90% 3504 881 555 437 350
99% 4194 1003 685 518 442
max 4445 1033 719 550 468
skew -0 -0 -1 -1 -1
kurt -1 -0 0 1 1
mad 920 182 96 68 55
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: D ************************
me_port me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-01-04 1960-01-04 1960-01-04 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 15164 15164 15164 15164 15164
mean 79.09 412.78 982.6 2416.53 17035.8
std 86.27 439.67 1057.88 2615.9 19157.8
min 6.73 27.9 68.08 178.31 1199.85
1% 8.96 37.66 88.57 237.83 1497.93
10% 14.4 56.07 128.23 318.88 1856.79
25% 19.59 79.22 166.37 387.95 2090.8
50% 31.07 191.49 535.47 1430.95 7525.56
75% 131.47 690.13 1565.35 3665.02 29167.2
90% 215.87 1130.5 2564.95 6323.36 45361.6
99% 380.63 1694.92 4673.21 11725.9 82619.8
max 430.04 1912.7 5427.69 15170.7 98985.6
skew 1.53 1.24 1.45 1.62 1.39
kurt 1.75 0.41 1.63 2.69 1.57
mad 69.16 360.26 839.39 2029.8 15860.8
In [13]: # daily portfolios
_, _, _, = ff_D.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
*********************************** ME (5) ************************************
*********************** Observation frequency: D ************************
************************* Returns: 1960-01-04 to 2020-03-31 **************************
Correlation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
corr: 0.985 0.985 0.992 0.993 0.997
Average matrix:
me0-20 me20-40 ... me60-80 me80-100
[wrds, kflib]: [0.05%, 0.04%] [0.05%, 0.05%] ... [0.05%, 0.05%] [0.04%, 0.04%]
[1 rows x 5 columns]
Std Deviation matrix:
me0-20 me20-40 ... me60-80 me80-100
[wrds, kflib]: [1.06%, 1.02%] [1.12%, 1.1%] ... [1.01%, 1.02%] [1.02%, 1.01%]
[1 rows x 5 columns]
Elapsed time: 91.655 seconds.
(10 x 1) Decile Sorts:
In [11]: sortingDim = [10]
In [12]: # Summary statistics
ff_D.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_D.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_D.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: D ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1960-01-04 1960-01-04 ... 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 15164 15164 ... 15164 15164
mean 0.0% 0.0% ... 0.0% 0.0%
std 0.01% 0.01% ... 0.01% 0.01%
min -0.17% -0.16% ... -0.18% -0.2%
1% -0.03% -0.03% ... -0.03% -0.03%
10% -0.01% -0.01% ... -0.01% -0.01%
25% -0.0% -0.0% ... -0.0% -0.0%
50% 0.0% 0.0% ... 0.0% 0.0%
75% 0.0% 0.01% ... 0.01% 0.01%
90% 0.01% 0.01% ... 0.01% 0.01%
99% 0.02% 0.03% ... 0.03% 0.03%
max 0.14% 0.12% ... 0.12% 0.12%
skew -1.12% -0.48% ... -0.65% -0.56%
kurt 25.55% 13.5% ... 18.86% 19.82%
mad 0.01% 0.01% ... 0.01% 0.01%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: D ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1960-01-04 1960-01-04 ... 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 15164 15164 ... 15164 15164
mean 1698 460 ... 143 137
std 891 245 ... 40 37
min 19 6 ... 9 5
1% 19 6 ... 9 5
10% 277 120 ... 82 79
25% 768 336 ... 131 129
50% 1838 437 ... 146 143
75% 2422 589 ... 168 158
90% 2804 814 ... 182 170
99% 3242 1031 ... 225 217
max 3405 1068 ... 243 225
skew -0 0 ... -1 -1
kurt -1 -0 ... 1 2
mad 747 193 ... 29 26
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (10) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: D ************************
me_port me0-10 me10-20 ... me80-90 me90-100
startdate 1960-01-04 1960-01-04 ... 1960-01-04 1960-01-04
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 15164 15164 ... 15164 15164
mean 47.56 181.07 ... 5954.2 29116.7
std 50.4 192.23 ... 6609.56 34216.7
min 4.93 14.73 ... 388.42 2031.14
1% 6.52 20.06 ... 513.58 2466.8
10% 9.79 27.66 ... 671.5 3050.29
25% 13.27 41.11 ... 778.92 3440.26
50% 20.22 80.72 ... 3240.1 11976.3
75% 77.17 306.07 ... 9491.63 50586
90% 126.97 509.56 ... 16009.9 76206.4
99% 214.91 775.37 ... 32230 173378
max 266.17 891.06 ... 36109.6 212162
skew 1.53 1.3 ... 1.54 1.77
kurt 1.72 0.66 ... 2.39 4.15
mad 40.44 157.46 ... 5252.5 27607.3
In [13]: # daily portfolios
_, _, _, = ff_D.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
*********************************** ME (10) ************************************
*********************** Observation frequency: D ************************
************************* Returns: 1960-01-04 to 2020-03-31 **************************
Correlation matrix:
me0-10 me10-20 me20-30 me30-40 ... me60-70 me70-80 me80-90 me90-100
corr: 0.968 0.982 0.982 0.978 ... 0.985 0.988 0.992 0.996
[1 rows x 10 columns]
Average matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [0.05%, 0.04%] [0.05%, 0.05%] ... [0.04%, 0.04%] [0.04%, 0.04%]
[1 rows x 10 columns]
Std Deviation matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [0.99%, 0.92%] [1.15%, 1.12%] ... [1.0%, 1.01%] [1.03%, 1.02%]
[1 rows x 10 columns]
Elapsed time: 93.507 seconds.
Portfolios Sorted on Size ME
: Monthly¶
In [9]: ffFreq = 'M'
In [10]: ff_M = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
(3 x 1) Sorts:
In [11]: sortingDim = [3]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, 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 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 0.01% 0.01% 0.01%
std 0.06% 0.05% 0.04%
min -0.34% -0.3% -0.21%
1% -0.17% -0.14% -0.1%
10% -0.06% -0.05% -0.04%
25% -0.02% -0.02% -0.02%
50% 0.01% 0.01% 0.01%
75% 0.05% 0.04% 0.03%
90% 0.08% 0.07% 0.06%
99% 0.15% 0.13% 0.11%
max 0.28% 0.23% 0.18%
skew -0.52% -0.74% -0.4%
kurt 3.25% 3.4% 1.74%
mad 0.05% 0.04% 0.03%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
me0-30 me30-70 me70-100
startdate 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 2456 799 433
std 1245 276 121
min 31 29 20
1% 31 29 20
10% 491 343 240
25% 1328 770 404
50% 2534 850 453
75% 3472 931 502
90% 3949 1138 558
99% 4693 1348 680
max 4956 1428 718
skew -0 -1 -1
kurt -1 0 1
mad 1013 204 88
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
me_port me0-30 me30-70 me70-100
startdate 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 115.54 1004.31 12182.6
std 128.88 1060.45 13828.6
min 9.06 74.98 864.46
1% 11.88 98.22 1101.41
10% 19.37 139.23 1363.76
25% 27.38 177.75 1531.07
50% 43.35 541.5 5477.92
75% 189.7 1592.17 20489
90% 306.94 2667.29 32628.8
99% 568.47 4189.41 61689.2
max 642.7 4691.3 69162.8
skew 1.56 1.32 1.49
kurt 1.88 0.89 2.07
mad 102.6 851.04 11282.5
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-30 me30-70 me70-100
corr: 0.993 0.995 0.997
Average matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [1.06%, 1.05%] [1.01%, 1.02%] [0.87%, 0.86%]
Std Deviation matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [6.25%, 6.09%] [5.3%, 5.3%] [4.22%, 4.25%]
Elapsed time: 100.566 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-30 me30-70 me70-100
corr: 0.967 0.921 0.854
Average matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [2456, 2829] [799, 870] [433, 472]
Std Deviation matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [1245, 1281] [276, 226] [121, 82]
Elapsed time: 5.229 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
me0-30 me30-70 me70-100
corr: 0.977 0.991 0.992
Average matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [115.54, 105.23] [1004.31, 946.07] [12182.59, 11808.07]
Std Deviation matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [128.88, 113.05] [1060.45, 999.73] [13828.64, 13245.28]
Elapsed time: 5.097 seconds.
(5 x 1) Quintile Sorts:
In [11]: sortingDim = [5]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 0.01% 0.01% 0.01% 0.01% 0.01%
std 0.06% 0.06% 0.05% 0.05% 0.04%
min -0.36% -0.37% -0.28% -0.25% -0.2%
1% -0.17% -0.16% -0.14% -0.13% -0.1%
10% -0.07% -0.06% -0.05% -0.05% -0.04%
25% -0.02% -0.02% -0.02% -0.02% -0.02%
50% 0.01% 0.02% 0.01% 0.01% 0.01%
75% 0.05% 0.05% 0.05% 0.04% 0.03%
90% 0.08% 0.08% 0.07% 0.07% 0.06%
99% 0.16% 0.13% 0.13% 0.13% 0.11%
max 0.29% 0.26% 0.23% 0.19% 0.18%
skew -0.41% -0.77% -0.69% -0.5% -0.38%
kurt 3.43% 3.86% 3.02% 2.04% 1.72%
mad 0.05% 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 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 2143 563 387 315 279
std 1111 237 132 95 76
min 25 15 15 11 14
1% 25 15 15 11 14
10% 399 179 174 161 161
25% 1072 483 374 304 262
50% 2230 596 411 330 288
75% 3056 694 448 360 325
90% 3480 879 547 433 348
99% 4144 995 675 516 438
max 4391 1029 711 543 465
skew -0 -0 -1 -1 -1
kurt -1 -0 0 1 1
mad 915 182 96 68 55
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
me_port me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 79.77 415.45 988.3 2430.13 17081.2
std 86.74 442.15 1061.08 2628.59 19199.7
min 6.91 29.26 70.13 180.85 1225.56
1% 9.11 38.89 90.45 237.84 1515.12
10% 14.47 55.99 128.05 321.45 1872.1
25% 19.81 79.64 166.96 389.72 2094.28
50% 31.52 191.98 539.09 1434.43 7476.49
75% 132.12 694.7 1562.8 3702.32 29182.1
90% 217.95 1138.24 2580.5 6339.92 45295.8
99% 378.94 1689.9 4528.82 11427.2 81277.5
max 430.04 1908.78 5205.69 14078.5 90732.4
skew 1.51 1.23 1.42 1.6 1.38
kurt 1.67 0.38 1.48 2.56 1.5
mad 69.68 362.5 844.08 2042.27 15897.7
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
corr: 0.99 0.989 0.995 0.994 0.997
Average matrix:
me0-20 me20-40 ... me60-80 me80-100
[wrds, kflib]: [1.07%, 1.03%] [1.03%, 1.05%] ... [1.04%, 1.0%] [0.86%, 0.84%]
[1 rows x 5 columns]
Std Deviation matrix:
me0-20 me20-40 ... me60-80 me80-100
[wrds, kflib]: [6.43%, 6.21%] [5.96%, 5.85%] ... [4.91%, 5.03%] [4.19%, 4.21%]
[1 rows x 5 columns]
Elapsed time: 5.526 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
corr: 0.966 0.958 0.916 0.88 0.834
Average matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
[wrds, kflib]: [2143, 2485] [563, 617] [387, 421] [315, 344] [279, 305]
Std Deviation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
[wrds, kflib]: [1111, 1163] [237, 213] [132, 109] [95, 70] [76, 50]
Elapsed time: 5.515 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
corr: 0.97 0.992 0.983 0.982 0.994
Average matrix:
me0-20 ... me80-100
[wrds, kflib]: [79.77, 72.27] ... [17081.19, 16670.08]
[1 rows x 5 columns]
Std Deviation matrix:
me0-20 ... me80-100
[wrds, kflib]: [86.74, 74.75] ... [19199.67, 18704.98]
[1 rows x 5 columns]
Elapsed time: 5.268 seconds.
(10 x 1) Decile Sorts:
In [11]: sortingDim = [10]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw'
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 0.01% 0.01% ... 0.01% 0.01%
std 0.07% 0.06% ... 0.05% 0.04%
min -0.41% -0.31% ... -0.22% -0.2%
1% -0.19% -0.17% ... -0.11% -0.1%
10% -0.06% -0.07% ... -0.05% -0.04%
25% -0.02% -0.03% ... -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.12% 0.11%
max 0.31% 0.3% ... 0.18% 0.18%
skew -0.46% -0.32% ... -0.44% -0.36%
kurt 4.38% 2.65% ... 1.99% 1.65%
mad 0.05% 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 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 1686 457 ... 142 137
std 886 244 ... 40 37
min 19 6 ... 9 5
1% 19 6 ... 9 5
10% 277 120 ... 82 79
25% 766 336 ... 131 130
50% 1829 435 ... 146 143
75% 2400 586 ... 167 158
90% 2788 803 ... 182 169
99% 3206 1026 ... 225 213
max 3368 1052 ... 241 224
skew -0 0 ... -1 -1
kurt -1 -0 ... 1 2
mad 743 192 ... 29 26
[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 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
count 723 723 ... 723 723
mean 48.03 182.37 ... 5976.78 29190.2
std 50.67 193.25 ... 6615.78 34276.4
min 5.04 15.22 ... 393.83 2080.73
1% 6.61 20.88 ... 517.7 2512.42
10% 9.92 27.74 ... 673.95 3057.81
25% 13.29 41.36 ... 777.04 3452.13
50% 20.4 80.7 ... 3208.76 12057.3
75% 76.74 305.09 ... 9556.76 50541.4
90% 128.01 513.19 ... 16083.4 76165.6
99% 213.24 774.53 ... 30900.9 174582
max 259.13 891.06 ... 33968.9 193829
skew 1.5 1.29 ... 1.51 1.75
kurt 1.58 0.61 ... 2.21 4.01
mad 40.79 158.53 ... 5273.11 27671.3
[17 rows x 10 columns]
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-10 me10-20 me20-30 me30-40 ... me60-70 me70-80 me80-90 me90-100
corr: 0.984 0.99 0.991 0.983 ... 0.99 0.988 0.994 0.996
[1 rows x 10 columns]
Average matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [1.08%, 1.04%] [1.07%, 1.02%] ... [0.91%, 0.94%] [0.85%, 0.83%]
[1 rows x 10 columns]
Std Deviation matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [6.51%, 6.23%] [6.44%, 6.27%] ... [4.54%, 4.56%] [4.18%, 4.19%]
[1 rows x 10 columns]
Elapsed time: 5.62 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
me0-10 me10-20 me20-30 me30-40 ... me60-70 me70-80 me80-90 me90-100
corr: 0.965 0.969 0.964 0.94 ... 0.875 0.881 0.847 0.817
[1 rows x 10 columns]
Average matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [1686, 1973] [457, 512] ... [142, 156] [137, 149]
[1 rows x 10 columns]
Std Deviation matrix:
me0-10 me10-20 ... me80-90 me90-100
[wrds, kflib]: [886, 955] [244, 234] ... [40, 28] [37, 23]
[1 rows x 10 columns]
Elapsed time: 5.308 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
me0-10 me10-20 me20-30 me30-40 ... me60-70 me70-80 me80-90 me90-100
corr: 0.952 0.985 0.992 0.993 ... 0.992 0.98 0.985 0.981
[1 rows x 10 columns]
Average matrix:
me0-10 ... me90-100
[wrds, kflib]: [48.03, 43.31] ... [29190.16, 28203.72]
[1 rows x 10 columns]
Std Deviation matrix:
me0-10 ... me90-100
[wrds, kflib]: [50.67, 43.18] ... [34276.36, 31739.34]
[1 rows x 10 columns]
Elapsed time: 5.263 seconds.
Portfolios Sorted on Size ME
: Annual¶
In [9]: ffFreq = 'A'
In [10]: ff_A = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
(3 x 1) Sorts:
In [11]: sortingDim = [3]
In [12]: # Summary statistics
ff_A.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_A.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_A.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, 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 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 60 60 60
mean 0.15% 0.14% 0.11%
std 0.26% 0.19% 0.17%
min -0.37% -0.35% -0.37%
1% -0.36% -0.31% -0.31%
10% -0.14% -0.11% -0.1%
25% -0.06% 0.01% 0.02%
50% 0.19% 0.17% 0.14%
75% 0.33% 0.27% 0.23%
90% 0.46% 0.38% 0.32%
99% 0.77% 0.48% 0.37%
max 0.92% 0.52% 0.38%
skew 0.27% -0.36% -0.63%
kurt 0.26% -0.16% 0.13%
mad 0.21% 0.16% 0.13%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
me0-30 me30-70 me70-100
startdate 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 60 60 60
mean 2465 802 436
std 1236 269 115
min 150 198 148
1% 167 201 149
10% 627 388 254
25% 1665 770 413
50% 2531 848 451
75% 3484 925 501
90% 3826 1115 550
99% 4559 1260 648
max 4577 1273 669
skew -0 -1 -1
kurt -1 -0 1
mad 1003 199 85
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: A ************************
me_port me0-30 me30-70 me70-100
startdate 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31
count 60 60 60
mean 108.53 972.74 11929
std 122.78 1031.99 13392.2
min 11.14 89.06 1063.89
1% 12.24 102.95 1114.86
10% 18.09 133.45 1345.73
25% 25.45 170.1 1486
50% 42.29 541.39 5630.78
75% 173.37 1541.8 19383.4
90% 295.95 2680.51 30816.7
99% 450.68 3878.05 51804.7
max 606.37 4026.68 54933.1
skew 1.74 1.31 1.36
kurt 3.35 0.8 1.31
mad 96.17 825.58 11045.4
In [13]: # annual portfolios
_, _, _, = ff_A.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_A.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1960-12-31 to 2019-12-31 **************************
Correlation matrix:
me0-30 me30-70 me70-100
corr: 0.996 0.995 0.999
Average matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [15.24%, 14.61%] [13.64%, 13.64%] [11.38%, 11.35%]
Std Deviation matrix:
me0-30 me30-70 me70-100
[wrds, kflib]: [25.86%, 25.79%] [19.42%, 20.24%] [16.64%, 16.64%]
Elapsed time: 64.261 seconds.
*********************************** ME (3) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.53 seconds.
(5 x 1) Quintile Sorts:
In [11]: sortingDim = [5]
In [12]: # Summary statistics
ff_A.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_A.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_A.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-12-31 1960-12-31 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 60 60 60 60 60
mean 0.16% 0.14% 0.14% 0.13% 0.11%
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.3% -0.33% -0.31%
10% -0.15% -0.16% -0.12% -0.08% -0.11%
25% -0.07% -0.03% 0.0% 0.02% 0.02%
50% 0.18% 0.17% 0.16% 0.16% 0.14%
75% 0.32% 0.27% 0.29% 0.27% 0.22%
90% 0.48% 0.42% 0.37% 0.36% 0.32%
99% 0.86% 0.59% 0.5% 0.45% 0.36%
max 1.01% 0.63% 0.51% 0.5% 0.39%
skew 0.38% -0.12% -0.3% -0.56% -0.6%
kurt 0.49% -0.34% -0.32% 0.37% 0.1%
mad 0.22% 0.17% 0.16% 0.14% 0.13%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-12-31 1960-12-31 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 60 60 60 60 60
mean 2151 564 389 317 282
std 1104 233 129 91 72
min 102 97 100 98 99
1% 116 101 101 99 100
10% 505 214 192 171 168
25% 1432 466 377 309 265
50% 2231 595 412 331 289
75% 3079 675 448 361 325
90% 3394 878 537 423 351
99% 4011 958 623 484 417
max 4015 962 627 502 430
skew -0 -0 -1 -1 -1
kurt -1 -1 0 0 1
mad 907 179 94 65 53
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** ME (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: A ************************
me_port me0-20 me20-40 me40-60 me60-80 me80-100
startdate 1960-12-31 1960-12-31 1960-12-31 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 2019-12-31 2019-12-31 2019-12-31
count 60 60 60 60 60
mean 74.52 394.62 942.41 2323.61 16773.3
std 81.93 419.25 992.02 2434.72 18695.7
min 8.56 35.89 83.82 217.01 1523.9
1% 9.47 42.23 96.96 249.07 1550.61
10% 13.59 55.05 121.25 306.41 1845.78
25% 18.6 75.46 159.4 376.71 2046.98
50% 29.81 185.38 533.89 1447.4 7786.82
75% 117.5 642.98 1517.36 3524.15 28126
90% 198.91 1071.54 2543.06 6175.21 42740.2
99% 297.21 1455.73 3612.33 9322.32 71379.2
max 403.81 1787.37 3930.2 9771.45 73873.9
skew 1.69 1.28 1.25 1.32 1.28
kurt 3.09 0.83 0.6 1.01 0.98
mad 64.8 341.7 800.62 1940.2 15615.2
In [13]: # annual portfolios
_, _, _, = ff_A.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_A.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1960-12-31 to 2019-12-31 **************************
Correlation matrix:
me0-20 me20-40 me40-60 me60-80 me80-100
corr: 0.996 0.995 0.996 0.995 1.0
Average matrix:
me0-20 ... me80-100
[wrds, kflib]: [15.53%, 14.53%] ... [11.21%, 11.2%]
[1 rows x 5 columns]
Std Deviation matrix:
me0-20 ... me80-100
[wrds, kflib]: [27.84%, 27.64%] ... [16.69%, 16.67%]
[1 rows x 5 columns]
Elapsed time: 5.455 seconds.
*********************************** ME (5) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.454 seconds.
(10 x 1) Decile Sorts:
In [11]: sortingDim = [10]
In [12]: # Summary statistics
ff_A.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_A.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_A.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
me0-10 me10-20 ... me80-90 me90-100
startdate 1960-12-31 1960-12-31 ... 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 60 60 ... 60 60
mean 0.17% 0.15% ... 0.12% 0.11%
std 0.31% 0.26% ... 0.17% 0.17%
min -0.44% -0.36% ... -0.42% -0.35%
1% -0.4% -0.36% ... -0.32% -0.31%
10% -0.16% -0.15% ... -0.11% -0.12%
25% -0.07% -0.05% ... 0.0% 0.02%
50% 0.18% 0.16% ... 0.15% 0.13%
75% 0.33% 0.31% ... 0.21% 0.23%
90% 0.49% 0.46% ... 0.36% 0.33%
99% 1.01% 0.73% ... 0.39% 0.37%
max 1.14% 0.85% ... 0.4% 0.4%
skew 0.56% 0.21% ... -0.66% -0.54%
kurt 0.83% -0.09% ... 0.55% 0.0%
mad 0.24% 0.21% ... 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 1960-12-31 1960-12-31 ... 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 60 60 ... 60 60
mean 1693 459 ... 143 138
std 880 241 ... 38 34
min 50 52 ... 50 49
1% 61 55 ... 50 49
10% 342 127 ... 85 84
25% 1120 334 ... 134 131
50% 1824 434 ... 146 143
75% 2423 584 ... 167 158
90% 2814 798 ... 182 167
99% 3090 955 ... 217 200
max 3129 959 ... 222 208
skew -0 0 ... -1 -1
kurt -1 -0 ... 0 1
mad 736 189 ... 28 25
[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 1960-12-31 1960-12-31 ... 1960-12-31 1960-12-31
enddate 2019-12-31 2019-12-31 ... 2019-12-31 2019-12-31
count 60 60 ... 60 60
mean 43.8 172.34 ... 5864.92 28683.3
std 45.22 183.15 ... 6498.16 32929.6
min 6.35 18.62 ... 481.31 2585.48
1% 6.87 21.56 ... 528.61 2600.09
10% 9.53 27.81 ... 667.11 3019.31
25% 13.09 40.34 ... 750.28 3341.11
50% 19.29 78.43 ... 3294.32 12388.6
75% 67.14 278.14 ... 9030.16 49917.9
90% 113.14 461.86 ... 15338 72507.6
99% 164.27 646.13 ... 25135.2 128625
max 206.39 827.85 ... 28501.7 149494
skew 1.47 1.41 ... 1.44 1.47
kurt 1.62 1.5 ... 1.74 2.13
mad 36.51 148.07 ... 5182.42 27165.5
[17 rows x 10 columns]
In [13]: # annual portfolios
_, _, _, = ff_A.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_A.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
************************* Returns: 1960-12-31 to 2019-12-31 **************************
Correlation matrix:
me0-10 me10-20 me20-30 me30-40 ... me60-70 me70-80 me80-90 me90-100
corr: 0.969 0.992 0.989 0.991 ... 0.99 0.986 0.996 0.999
[1 rows x 10 columns]
Average matrix:
me0-10 ... me90-100
[wrds, kflib]: [16.85%, 15.07%] ... [11.1%, 10.97%]
[1 rows x 10 columns]
Std Deviation matrix:
me0-10 ... me90-100
[wrds, kflib]: [30.64%, 29.93%] ... [16.85%, 16.78%]
[1 rows x 10 columns]
Elapsed time: 5.69 seconds.
*********************************** ME (10) ************************************
*********************** Observation frequency: A ************************
************************** (Characteristic: ME) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 5.396 seconds
Portfolios Sorted on Book-to-Market BM
¶
In [8]: ffFactors, ffsortCharac, ffportCharac = [], ['BM'], ['ME', 'BM']
Portfolios Sorted on Book-to-Market BM
: Monthly¶
In [9]: ffFreq = 'M'
In [10]: ff_M = ff.FamaFrench(pickled_dir, runQuery, ffFreq, ffsortCharac, ffFactors, ffportCharac)
(3 x 1) Sorts:
In [11]: sortingDim = [3]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, 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 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 0.01% 0.01% 0.01%
std 0.05% 0.04% 0.05%
min -0.24% -0.21% -0.26%
1% -0.11% -0.1% -0.14%
10% -0.05% -0.04% -0.04%
25% -0.02% -0.01% -0.01%
50% 0.01% 0.01% 0.01%
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.42% -0.61%
kurt 1.9% 2.4% 3.37%
mad 0.04% 0.03% 0.04%
*********************************** Summary Statistics: Number of Firms ***********************************
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
bm0-30 bm30-70 bm70-100
startdate 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 1193 1161 1145
std 574 473 545
min 29 24 24
1% 29 24 24
10% 292 388 343
25% 767 894 776
50% 1178 1263 1205
75% 1712 1460 1388
90% 1924 1677 1981
99% 2137 2048 2253
max 2187 2165 2332
skew -0 -1 -0
kurt -1 -0 -0
mad 477 369 414
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** BM (3) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-30 bm30-70 bm70-100
startdate 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 3518.31 2004.91 784.4
std 4936.54 3063.72 1070.41
min 227.66 118.11 31.15
1% 282.44 132.87 34.36
10% 350.87 269.04 102.17
25% 475.41 379.56 134.83
50% 925.31 739.42 354.47
75% 5757.95 2448.26 852.39
90% 9194.79 6008.14 2162.87
99% 28097.8 20796.7 5319.9
max 32299.9 23487.3 5818.27
skew 2.73 3.96 2.36
kurt 10 21.62 5.87
mad 3564.83 1939.34 763.55
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-30 bm30-70 bm70-100
startdate 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31
count 723 723 723
mean 0.28 0.69 1.33
std 0.12 0.28 0.55
min 0.07 0.3 0.73
1% 0.08 0.31 0.74
10% 0.16 0.43 0.83
25% 0.2 0.48 0.95
50% 0.24 0.6 1.22
75% 0.34 0.78 1.47
90% 0.48 1.08 1.86
99% 0.7 1.8 3.64
max 0.72 1.8 4.21
skew 1.21 1.57 2.19
kurt 1.32 3.03 6.58
mad 0.09 0.21 0.38
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.997 0.984 0.992
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [0.86%, 0.87%] [0.94%, 0.91%] [1.08%, 1.08%]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [4.63%, 4.62%] [4.23%, 4.3%] [4.97%, 4.93%]
Elapsed time: 82.019 seconds.
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.98 0.959 0.977
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [1193, 1235] [1161, 1204] [1145, 1149]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [574, 524] [473, 405] [545, 472]
Elapsed time: 6.995 seconds.
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
bm0-30 bm30-70 bm70-100
corr: 0.973 0.834 0.974
Average matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [3518.31, 3229.51] [2004.91, 1751.94] [784.4, 821.77]
Std Deviation matrix:
bm0-30 bm30-70 bm70-100
[wrds, kflib]: [4936.54, 4140.62] [3063.72, 2117.63] [1070.41, 1080.39]
*********************************** BM (3) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.481 seconds.
(5 x 1) Sorts:
In [11]: sortingDim = [5]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 0.01% 0.01% 0.01% 0.01% 0.01%
std 0.05% 0.04% 0.04% 0.05% 0.05%
min -0.24% -0.25% -0.22% -0.48% -0.21%
1% -0.12% -0.11% -0.11% -0.15% -0.15%
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.03% 0.04% 0.04%
90% 0.06% 0.06% 0.06% 0.06% 0.07%
99% 0.11% 0.11% 0.11% 0.12% 0.13%
max 0.22% 0.16% 0.17% 0.22% 0.26%
skew -0.37% -0.5% -0.49% -1.76% -0.29%
kurt 1.69% 2.28% 2.44% 15.43% 2.07%
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 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 882 605 573 613 825
std 451 248 236 267 405
min 19 15 14 13 16
1% 19 15 14 13 16
10% 201 188 197 206 231
25% 552 438 458 504 500
50% 822 650 620 637 871
75% 1278 774 732 742 1036
90% 1485 850 806 949 1429
99% 1658 1087 1054 1179 1662
max 1692 1155 1133 1235 1746
skew -0 -1 -1 -0 -0
kurt -1 -0 -0 -0 -0
mad 381 197 185 195 313
*********************************** Summary Statistics: Firm Characteristics ***********************************
*********************************** BM (5) ************************************
************************** (Characteristic: ME) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 3855.98 2854.28 1829.46 1239.75 620.67
std 6213.33 4312.59 2230.86 1498.27 833.82
min 206.95 139.85 135.58 57.89 22.2
1% 261.18 166.31 147.51 69.99 24.67
10% 366.42 278.66 264.4 160.56 76.39
25% 507.95 388.57 347.39 263.35 115.34
50% 997.17 902.61 745.15 661.39 251.51
75% 5931.66 3989.12 2297.31 1443.52 569.19
90% 8542.2 8891.27 5886.38 3388.98 1878.96
99% 41645.1 27194.9 8656.41 7796.9 3341.71
max 48373.6 29893.2 10535.4 8368.98 3673.48
skew 4.09 3.24 1.7 2.17 1.94
kurt 22.5 14.56 2 5.4 2.87
mad 3942.52 2886.93 1696.68 1098.93 618.67
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
startdate 1960-01-31 1960-01-31 1960-01-31 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 2020-03-31 2020-03-31 2020-03-31
count 723 723 723 723 723
mean 0.24 0.49 0.69 0.94 1.57
std 0.1 0.2 0.27 0.36 0.71
min 0.06 0.26 0.35 0.54 0.82
1% 0.06 0.26 0.35 0.54 0.83
10% 0.13 0.3 0.43 0.62 0.95
25% 0.17 0.35 0.49 0.69 1.1
50% 0.2 0.43 0.61 0.84 1.45
75% 0.29 0.55 0.77 1.03 1.74
90% 0.41 0.76 1.08 1.43 2.19
99% 0.54 1.32 1.83 2.5 4.88
max 0.55 1.32 1.83 2.5 5.36
skew 1.04 1.66 1.64 1.81 2.63
kurt 0.51 3.54 3.42 4.42 9.34
mad 0.08 0.15 0.21 0.26 0.46
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
corr: 0.997 0.987 0.988 0.96 0.981
Average matrix:
bm0-20 bm20-40 ... bm60-80 bm80-100
[wrds, kflib]: [0.85%, 0.85%] [0.9%, 0.91%] ... [0.9%, 0.95%] [1.17%, 1.13%]
[1 rows x 5 columns]
Std Deviation matrix:
bm0-20 bm20-40 ... bm60-80 bm80-100
[wrds, kflib]: [4.77%, 4.76%] [4.43%, 4.45%] ... [4.92%, 4.54%] [5.18%, 5.32%]
[1 rows x 5 columns]
Elapsed time: 5.842 seconds.
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
corr: 0.985 0.96 0.964 0.954 0.983
Average matrix:
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
[wrds, kflib]: [882, 909] [605, 629] [573, 595] [613, 631] [825, 823]
Std Deviation matrix:
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
[wrds, kflib]: [451, 415] [248, 215] [236, 202] [267, 229] [405, 356]
Elapsed time: 6.303 seconds.
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
bm0-20 bm20-40 bm40-60 bm60-80 bm80-100
corr: 0.921 0.902 0.973 0.93 0.98
Average matrix:
bm0-20 ... bm80-100
[wrds, kflib]: [3855.98, 3327.93] ... [620.67, 646.14]
[1 rows x 5 columns]
Std Deviation matrix:
bm0-20 ... bm80-100
[wrds, kflib]: [6213.33, 4267.12] ... [833.82, 858.66]
[1 rows x 5 columns]
*********************************** BM (5) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.758 seconds.
(10 x 1) Sorts:
In [11]: sortingDim = [10]
In [12]: # Summary statistics
ff_M.getFamaFrenchStats('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
ff_M.getFamaFrenchStats('NumFirms', ffFreq, startDate, endDate, sortingDim)
ff_M.getFamaFrenchStats('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** Summary Statistics: Portfolio Returns ***********************************
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 0.01% 0.01% ... 0.01% 0.01%
std 0.05% 0.05% ... 0.05% 0.06%
min -0.23% -0.25% ... -0.21% -0.23%
1% -0.12% -0.12% ... -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.01%
75% 0.04% 0.04% ... 0.04% 0.05%
90% 0.07% 0.06% ... 0.07% 0.08%
99% 0.13% 0.11% ... 0.12% 0.16%
max 0.23% 0.19% ... 0.22% 0.31%
skew -0.28% -0.46% ... -0.38% -0.23%
kurt 1.48% 1.74% ... 1.95% 2.78%
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 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 531 352 ... 370 455
std 312 153 ... 185 232
min 5 14 ... 8 8
1% 5 14 ... 8 8
10% 102 94 ... 101 130
25% 288 264 ... 258 258
50% 453 367 ... 389 476
75% 828 471 ... 452 590
90% 971 543 ... 640 708
99% 1144 601 ... 811 994
max 1207 620 ... 894 1026
skew 0 -1 ... 0 0
kurt -1 -0 ... -0 -0
mad 267 121 ... 141 179
[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 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 4050.37 3686.25 ... 810.33 456.76
std 6673.92 5936.58 ... 1041 662.57
min 144.07 159.2 ... 29.55 15.44
1% 165.33 214.86 ... 32.5 17.99
10% 337.28 357.23 ... 91.34 49.76
25% 574.41 480.23 ... 148.69 91.39
50% 1176.26 860.43 ... 407 156.49
75% 6170.38 5674.13 ... 829.81 372.95
90% 8595.05 9212.61 ... 2380.14 1765.69
99% 46014.7 39383.5 ... 4395.87 2628.7
max 50793.7 47053.5 ... 4870.1 2885.31
skew 4.23 4.06 ... 1.92 1.93
kurt 23.55 22.6 ... 2.96 2.49
mad 4117.79 3790.67 ... 757.45 487.52
[17 rows x 10 columns]
************************** (Characteristic: BM) ***************************
*********************** Observation frequency: M ************************
bm_port bm0-10 bm10-20 ... bm80-90 bm90-100
startdate 1960-01-31 1960-01-31 ... 1960-01-31 1960-01-31
enddate 2020-03-31 2020-03-31 ... 2020-03-31 2020-03-31
count 723 723 ... 723 723
mean 0.18 0.33 ... 1.26 2.02
std 0.08 0.13 ... 0.48 0.97
min 0.01 0.09 ... 0.71 1
1% 0.01 0.09 ... 0.72 1.01
10% 0.09 0.2 ... 0.82 1.2
25% 0.12 0.23 ... 0.93 1.39
50% 0.15 0.29 ... 1.18 1.8
75% 0.21 0.39 ... 1.4 2.28
90% 0.31 0.53 ... 1.81 2.81
99% 0.39 0.8 ... 3.56 7.23
max 0.39 0.8 ... 3.57 7.79
skew 0.9 1.22 ... 2.18 3.02
kurt 0.26 1.49 ... 7.28 12.48
mad 0.06 0.1 ... 0.33 0.62
[17 rows x 10 columns]
In [13]: # monthly portfolios
_, _, _, = ff_M.comparePortfolios('Returns', ffFreq, startDate, endDate, sortingDim, 'vw')
_, _, _, = ff_M.comparePortfolios('NumFirms', ffFreq, startDate, endDate, sortingDim)
_, _, _, = ff_M.comparePortfolios('Characs', ffFreq, startDate, endDate, sortingDim)
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* Returns: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-10 bm10-20 bm20-30 bm30-40 ... bm60-70 bm70-80 bm80-90 bm90-100
corr: 0.993 0.987 0.98 0.966 ... 0.93 0.958 0.972 0.966
[1 rows x 10 columns]
Average matrix:
bm0-10 bm10-20 ... bm80-90 bm90-100
[wrds, kflib]: [0.78%, 0.81%] [0.95%, 0.93%] ... [1.17%, 1.13%] [1.2%, 1.14%]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 bm10-20 ... bm80-90 bm90-100
[wrds, kflib]: [5.02%, 5.02%] [4.66%, 4.61%] ... [4.99%, 5.03%] [5.91%, 6.19%]
[1 rows x 10 columns]
Elapsed time: 6.544 seconds.
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* NumFirms: 1960-01-31 to 2020-03-31 **************************
Correlation matrix:
bm0-10 bm10-20 bm20-30 bm30-40 ... bm60-70 bm70-80 bm80-90 bm90-100
corr: 0.991 0.965 0.959 0.953 ... 0.943 0.953 0.977 0.984
[1 rows x 10 columns]
Average matrix:
bm0-10 bm10-20 ... bm80-90 bm90-100
[wrds, kflib]: [531, 546] [352, 364] ... [370, 372] [455, 451]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 bm10-20 ... bm80-90 bm90-100
[wrds, kflib]: [312, 290] [153, 139] ... [185, 162] [232, 206]
[1 rows x 10 columns]
Elapsed time: 6.593 seconds.
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************* (Characteristic: ME): 1960-01-31 to 2020-03-31 ***************************
Correlation matrix:
bm0-10 bm10-20 bm20-30 bm30-40 ... bm60-70 bm70-80 bm80-90 bm90-100
corr: 0.939 0.882 0.963 0.517 ... 0.876 0.958 0.974 0.985
[1 rows x 10 columns]
Average matrix:
bm0-10 ... bm90-100
[wrds, kflib]: [4050.37, 3458.62] ... [456.76, 467.89]
[1 rows x 10 columns]
Std Deviation matrix:
bm0-10 ... bm90-100
[wrds, kflib]: [6673.92, 4568.71] ... [662.57, 663.93]
[1 rows x 10 columns]
*********************************** BM (10) ************************************
*********************** Observation frequency: M ************************
************************** (Characteristic: BM) ***************************
******************************* NOT AVAILABLE *****************************
Elapsed time: 4.746 seconds.