Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxto/qapi
Light-weight library for quantitative analysis in finance
https://github.com/maxto/qapi
Last synced: 8 days ago
JSON representation
Light-weight library for quantitative analysis in finance
- Host: GitHub
- URL: https://github.com/maxto/qapi
- Owner: maxto
- License: gpl-2.0
- Created: 2021-01-25T20:42:29.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-01-30T10:39:54.000Z (11 months ago)
- Last Synced: 2024-08-13T07:11:53.670Z (4 months ago)
- Language: R
- Homepage:
- Size: 76.2 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- jimsghstars - maxto/qapi - Light-weight library for quantitative analysis in finance (R)
README
# qapi
## Overview
Qapi provides a light-weight library for quantitative analysis in finance. The package aims to optimize metrics for local data analysis, shiny web app or plumber-based microservice. Code is minimal with a limited packages dependency and basic input requirements. No missing values handling.
The package can be easily applied to `matrix`, `data.frame`, `data.table`, `list`, etc. with `apply` family of functions or custom helpers. It works with vectors and matrices.
Functions are implemented in pure R, for big data manipulation is advisable to use parallelization or C-based calculations.
## Installation
Install the development version from GitHub:
```r
# install.packages("remotes")
remotes::install_github("maxto/qapi")
```## Functions
### Quants
- **active_return** - Active return
- **adj_ann_sharpe_ratio** - Adjusted Annualized Sharpe ratio
- **ann_return** - Annualized return
- **ann_risk** - Annualized Risk
- **ann_sharpe_ratio** - Annualized Sharpe ratio
- **ann_sortino_ratio** - Annualized Sortino ratio
- **avg_drawdown** - Average Drawdown
- **burke_ratio** - Burke ratio
- **calmar_ratio** - Calmar ratio
- **cdrawdown** - Continuous drawdown
- **downside_potential** - Downside Potential
- **downside_risk** - Downside risk
- **drawdown** - Drawdown
- **drawdown_info** - Drawdown information
- **excess_return** - Excess return
- **hist_cvar** - Historical Conditional Value At Risk
- **hist_var** - Historical Value At Risk
- **martin_ratio** - Martin ratio
- **max_drawdown** - Max drawdown
- **omega_ratio** - Omega ratio
- **pain_index** - Pain index
- **pain_ratio** - Pain ratio
- **param_cvar** - Parametric Conditional Value At Risk
- **param_var** - Parametric Value At Risk
- **sharpe_ratio** - Sharpe ratio
- **sortino_ratio** - Sortino ratio
- **sterling_ratio** - Sterling ratio
- **ulcer_index** - Ulcer index
- **upside_potential** - Upside potential
- **upside_risk** - Upside risk### Stats
- **kurtosis** - Kurtosis
- **skewness** - Skewness
- **normpdf** - Normal probability density function (pdf)
- **norminv** - Inverse of the normal cumulative distribution function (cdf)### Time series
- **rand_ts** - Random time series for testing
### Utils
- **as_xts** - Convert data to xts class with pre-calculated dates from today (backward)
- **windowing** - Create a training/test set with sliding windows (rolling, anchored, with/without overlapping)## Usage
```r
library(qapi)# rand time series
ts_mat <- rand_ts(m = 20,n = 3,as_ret = T,method="matrix")
ts_xts <- rand_ts(m = 20,n = 3,as_ret = T,method="xts")
ts_df <- rand_ts(m = 20,n = 3,as_ret = T,method="data.frame")# single column or vector
sharpe_ratio(ts_mat[,1])
sharpe_ratio(ts_xts[,1])
sharpe_ratio(ts_df$s1)# for multiple columns
apply(ts_mat,2,function(a)sharpe_ratio(a))
apply(ts_xts,2,function(a)sharpe_ratio(a))
apply(ts_df,2,function(a)sharpe_ratio(a))```