pedquant
(Public Economic Data and QUANTitative
analysis) provides an interface to access public economic and financial
data for economic research and quantitative analysis. The functions are
grouped into three main categories,
The functions in this package are designed to minimize code writing for common tasks in quantitative analysis process. Since the parameters to get data can be specified interactively, it is very easy to get started. The loaded data have been carefully cleansed and provided in a unified format.
pedquant
package has advantages in multiple aspects. For
example, the format of loaded data is a list of data frames, which can
be easily manipulated using data.table or tidyverse packages; it offers high
performance in terms of speed by using data.table and TTR; and it generates
interactive charts using echarts4r. Similar works
include tidyquant and
quantmod.
pedquant
from CRAN
with:install.packages("pedquant")
pedquant
from github with:devtools::install_github("shichenxie/pedquant")
The following examples show you how to import data.
library(pedquant)
packageVersion('pedquant')
#> [1] '0.2.4'
# loading data
## import eocnomic data
dat1 = ed_fred('GDPCA')
#> 1/1 GDPCA
dat2 = ed_nbs(geo_type='nation', freq='quarterly', symbol='A010101')
## import market data
FAAG = md_stock(c('META', 'AMZN', 'AAPL', 'GOOG'), date_range = '10y')
#> 1/4 meta
#> 2/4 amzn
#> 3/4 aapl
#> 4/4 goog
INDX = md_stock(c('^000001','^399001'), date_range = '10y')
#> 1/2 ^000001
#> 2/2 ^399001
# double moving average strategy
## add technical indicators
data("dt_banks")
dtbnkti = pq_addti(dt_banks, x='close_adj', sma=list(n=200), sma=list(n=50))
## crossover signals
library(data.table)
dtorders = copy(dtbnkti[['601988.SH']])[
sma_50 %x>% sma_200, `:=`(side = 1, prices = close_adj)
][sma_50 %x<% sma_200, `:=`(side = -1, prices = close_adj)
][order(date)
][, (c('side', 'prices')) := lapply(.SD, shift), .SDcols = c('side', 'prices')
][,.(symbol, name, date, side, prices)
][!is.na(side)]
head(dtorders)
#> symbol name date side prices
#> 1: 601988.SH 中国银行 2021-04-20 1 5.76
#> 2: 601988.SH 中国银行 2021-08-19 -1 5.67
#> 3: 601988.SH 中国银行 2021-11-18 1 5.70
#> 4: 601988.SH 中国银行 2021-11-25 -1 5.71
#> 5: 601988.SH 中国银行 2022-01-18 1 5.72
# charting
e = pq_plot(setDT(dt_banks)[symbol=='601988.SH'], y='close_adj', addti = list(sma=list(n=200), sma=list(n=50)), orders = dtorders)
# e[['601988.SS']]
This package still on the developing stage. If you have any issue when using this package, please update to the latest version from github. If the issue still exists, report it at github page. Contributions in any forms to this project are welcome.