Financial Research Data Services
Project description
FRDS - Financial Research Data Services
frds is an open-sourced Python package for computing a collection of major academic measures used in the finance literature in a simple and straightforward way.
Installation
Install via pip
pip install frds -U
Install from source
git clone https://github.com/mgao6767/frds.git
Build and install the package locally.
cd frds
python setup.py build_ext --inplace
pip install -e .
On Windows, Microsoft Visual C++ Build Tools may need to be installed so that the C/C++ extensions in the package can be compiled.
Example usage
Built-in measures
The primary purpose of frds
is to offer ready-to-use functions used in researches.
For example, Kritzman, Li, Page, and Rigobon (2010) propose an Absorption Ratio that measures the fraction of the total variance of a set of asset returns explained or absorbed by a fixed number of eigenvectors. It captures the extent to which markets are unified or tightly coupled.
>>> import numpy as np
>>> from frds.measures import absorption_ratio
>>> data = np.array( # Hypothetical 6 daily returns of 3 assets.
... [
... [0.015, 0.031, 0.007, 0.034, 0.014, 0.011],
... [0.012, 0.063, 0.027, 0.023, 0.073, 0.055],
... [0.072, 0.043, 0.097, 0.078, 0.036, 0.083],
... ]
... )
>>> absorption_ratio(data, fraction_eigenvectors=0.2)
0.7746543307660252
Another example, Distress Insurance Premium (DIP) proposed by Huang, Zhou, and Zhu (2009) as a systemic risk measure of a hypothetical insurance premium against a systemic financial distress, defined as total losses that exceed a given threshold, say 15%, of total bank liabilities.
>>> from frds.measures import distress_insurance_premium
>>> # hypothetical implied default probabilities of 6 banks
>>> default_probabilities = np.array([0.02, 0.10, 0.03, 0.20, 0.50, 0.15]
>>> correlations = np.array(
... [
... [ 1.000, -0.126, -0.637, 0.174, 0.469, 0.283],
... [-0.126, 1.000, 0.294, 0.674, 0.150, 0.053],
... [-0.637, 0.294, 1.000, 0.073, -0.658, -0.085],
... [ 0.174, 0.674, 0.073, 1.000, 0.248, 0.508],
... [ 0.469, 0.150, -0.658, 0.248, 1.000, -0.370],
... [ 0.283, 0.053, -0.085, 0.508, -0.370, 1.000],
... ]
... )
>>> distress_insurance_premium(default_probabilities, correlations)
0.28661995758
For a complete list of supported built-in measures, please check frds.io/measures/.
Data source integration
Additionally, frds
provides an interface to load data from common data sources such as the Wharton Research Data Services (WRDS).
As an example, let's say we want to download the Compustat Fundamentals Annual dataset.
>>> from frds.data.wrds.comp import Funda
>>> from frds.io.wrds import load
>>> FUNDA = load(Funda, use_cache=True, obs=100)
>>> FUNDA.data.head()
FYEAR INDFMT CONSOL POPSRC DATAFMT TIC CUSIP CONM ... PRCL_F ADJEX_F RANK AU AUOP AUOPIC CEOSO CFOSO
GVKEY DATADATE ...
001000 1961-12-31 00:00:00.000000 1961.0 INDL C D STD AE.2 000032102 A & E PLASTIK PAK INC ... NaN 3.341831 NaN None None None None None
1962-12-31 00:00:00.000000 1962.0 INDL C D STD AE.2 000032102 A & E PLASTIK PAK INC ... NaN 3.341831 NaN None None None None None
1963-12-31 00:00:00.000000 1963.0 INDL C D STD AE.2 000032102 A & E PLASTIK PAK INC ... NaN 3.244497 NaN None None None None None
1964-12-31 00:00:00.000000 1964.0 INDL C D STD AE.2 000032102 A & E PLASTIK PAK INC ... NaN 3.089999 NaN None None None None None
1965-12-31 00:00:00.000000 1965.0 INDL C D STD AE.2 000032102 A & E PLASTIK PAK INC ... NaN 3.089999 NaN None None None None None
[5 rows x 946 columns]
We can then compute some measures on the go:
>>> tangibility = FUNDA.PPENT / FUNDA.AT
>>> type(tangibility)
<class 'pandas.core.series.Series'>
>>> tangibility.sample(10).sort_index()
GVKEY DATADATE
001000 1965-12-31 00:00:00.000000 0.604762
1967-12-31 00:00:00.000000 0.539495
1968-12-31 00:00:00.000000 0.654171
1977-12-31 00:00:00.000000 0.452402
001001 1985-12-31 00:00:00.000000 0.567439
001003 1980-12-31 00:00:00.000000 NaN
1988-01-31 00:00:00.000000 0.073495
001004 1967-05-31 00:00:00.000000 0.175518
1980-05-31 00:00:00.000000 0.183682
1982-05-31 00:00:00.000000 0.286231
dtype: float64
Note
This library is still under development and breaking changes may be expected.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.