GIỚI THIỆU VỀ TIDYQUANT

Như part I chúng ta đã biết tidyquant là một package thuộc thệ sinh thái tidyverse chuyên dùng cho phân tích tài chính. Nó kế thừa toàn bộ các hàm phân tích của các QFA (quantitative financial analytics package) như xts, zoo, quantmod, TTR và PerformanceAnalytics đưa vào hệ sinh thái tidyverse. Điểm khác biệt chủ yếu là tidyquant làm việc với tibble object thay vì xts object như các QFA package. Bên cạnh đó các hàm core functions trong hệ sinh thái tidyverse được sử dụng dễ dàng trong phân tích tài chính trong đó tiêu biểu với 2 hàm sau:

Ý tưởng của tq_transmute() và tq_mutate() cũng tương tự như hàm transmute() và mutate() trong dplyr. Cú pháp chung cho tq_transmute() và tq_mutate() là:

Trong đó ta quan tâm đến 2 arguments chính gồm: select là trường dữ liệu input cho biến đổi. mutate_fun là các hàm được kế thừa từ QFA để thực hiện các biến đổi dữ liệu tài chính theo tư tưởng của QFA.

CÁC MUTATE_FUN

Để biết danh sách các hàm mutate_fun được kế thừa từ các QFA package chúng ta sử dụng phương thức tq_transmute_fun_options()

library(dplyr)
library(tidyquant)
library(zoo)
library(xts)
library(quantmod)
library(TTR)
library(PerformanceAnalytics)
tq_transmute_fun_options()
## $zoo
##  [1] "rollapply"          "rollapplyr"         "rollmax"           
##  [4] "rollmax.default"    "rollmaxr"           "rollmean"          
##  [7] "rollmean.default"   "rollmeanr"          "rollmedian"        
## [10] "rollmedian.default" "rollmedianr"        "rollsum"           
## [13] "rollsum.default"    "rollsumr"          
## 
## $xts
##  [1] "apply.daily"     "apply.monthly"   "apply.quarterly"
##  [4] "apply.weekly"    "apply.yearly"    "diff.xts"       
##  [7] "lag.xts"         "period.apply"    "period.max"     
## [10] "period.min"      "period.prod"     "period.sum"     
## [13] "periodicity"     "to.daily"        "to.hourly"      
## [16] "to.minutes"      "to.minutes10"    "to.minutes15"   
## [19] "to.minutes3"     "to.minutes30"    "to.minutes5"    
## [22] "to.monthly"      "to.period"       "to.quarterly"   
## [25] "to.weekly"       "to.yearly"       "to_period"      
## 
## $quantmod
##  [1] "allReturns"      "annualReturn"    "ClCl"           
##  [4] "dailyReturn"     "Delt"            "HiCl"           
##  [7] "Lag"             "LoCl"            "LoHi"           
## [10] "monthlyReturn"   "Next"            "OpCl"           
## [13] "OpHi"            "OpLo"            "OpOp"           
## [16] "periodReturn"    "quarterlyReturn" "seriesAccel"    
## [19] "seriesDecel"     "seriesDecr"      "seriesHi"       
## [22] "seriesIncr"      "seriesLo"        "weeklyReturn"   
## [25] "yearlyReturn"   
## 
## $TTR
##  [1] "adjRatios"          "ADX"                "ALMA"              
##  [4] "aroon"              "ATR"                "BBands"            
##  [7] "CCI"                "chaikinAD"          "chaikinVolatility" 
## [10] "CLV"                "CMF"                "CMO"               
## [13] "DEMA"               "DonchianChannel"    "DPO"               
## [16] "DVI"                "EMA"                "EMV"               
## [19] "EVWMA"              "GMMA"               "growth"            
## [22] "HMA"                "KST"                "lags"              
## [25] "MACD"               "MFI"                "momentum"          
## [28] "OBV"                "PBands"             "ROC"               
## [31] "rollSFM"            "RSI"                "runCor"            
## [34] "runCov"             "runMAD"             "runMax"            
## [37] "runMean"            "runMedian"          "runMin"            
## [40] "runPercentRank"     "runSD"              "runSum"            
## [43] "runVar"             "SAR"                "SMA"               
## [46] "SMI"                "SNR"                "stoch"             
## [49] "TDI"                "TRIX"               "ultimateOscillator"
## [52] "VHF"                "VMA"                "volatility"        
## [55] "VWAP"               "VWMA"               "wilderSum"         
## [58] "williamsAD"         "WMA"                "WPR"               
## [61] "ZigZag"             "ZLEMA"             
## 
## $PerformanceAnalytics
## [1] "Return.annualized"        "Return.annualized.excess"
## [3] "Return.clean"             "Return.cumulative"       
## [5] "Return.excess"            "Return.Geltner"          
## [7] "zerofill"

zoo Functionality

tq_transmute_fun_options()$zoo
##  [1] "rollapply"          "rollapplyr"         "rollmax"           
##  [4] "rollmax.default"    "rollmaxr"           "rollmean"          
##  [7] "rollmean.default"   "rollmeanr"          "rollmedian"        
## [10] "rollmedian.default" "rollmedianr"        "rollsum"           
## [13] "rollsum.default"    "rollsumr"

Các hàm zoo function được tích hợp trong tidyquant được liệt kê ở trên. Về tổng quan bao gồm:

  • Lớp các hàm rollapply: Là các hàm được sử dụng lặp lại theo moving time trên tập dữ liệu để tính toán các chỉ số tài chính (chủ yếu là margins).

  • Cú pháp: rollapply(data, width, FUN, …, by = 1, by.column = TRUE, fill = if (na.pad) NA, na.pad = FALSE, partial = FALSE, align = c(“center”, “left”, “right”), coredata = TRUE).

Trong đó with là độ rộng của một window, FUN là tên hàm áp dụng. VD: muốn tính moving average với độ rộng n = 2 của chuỗi thời gian ta áp dụng rollapply như sau:

library(zoo)
help("rollapply")
z <- zoo(11:15, as.Date(31:35))
z
## 1970-02-01 1970-02-02 1970-02-03 1970-02-04 1970-02-05 
##         11         12         13         14         15
rollapply(z, 2, mean)
## 1970-02-01 1970-02-02 1970-02-03 1970-02-04 
##       11.5       12.5       13.5       14.5
  • Các hàm rollapply sẵn có bao gồm rollmax, rollmean, rollmedian, rollsum,…

xts Functionality

Danh sách các hàm thuộc xts được sử dụng trong tidyquant:

tq_transmute_fun_options()$xts 
##  [1] "apply.daily"     "apply.monthly"   "apply.quarterly"
##  [4] "apply.weekly"    "apply.yearly"    "diff.xts"       
##  [7] "lag.xts"         "period.apply"    "period.max"     
## [10] "period.min"      "period.prod"     "period.sum"     
## [13] "periodicity"     "to.daily"        "to.hourly"      
## [16] "to.minutes"      "to.minutes10"    "to.minutes15"   
## [19] "to.minutes3"     "to.minutes30"    "to.minutes5"    
## [22] "to.monthly"      "to.period"       "to.quarterly"   
## [25] "to.weekly"       "to.yearly"       "to_period"

Trong đó chúng ta chia thành 2 nhóm chính:

  • Period apply function: Áp dụng các hàm thống kê theo time segment

    • Các hàm này được ứng dụng theo time segment (chẳng hạn như tính max, min, mean, … theo các time segment daily,weekly, monthly, quarterly, yearly).

    • Cú pháp: apply.daily(x, FUN, …). Trong đó FUN là hàm số áp dụng (min,max,mean,…)

    • Trường hợp chưa xác định periodic sử dụng hàm: period.apply(x,INDEX,FUN,…). INDEX là điểm endpoints đánh dấu cho vị trí kết thúc chu kì. Chẳng hạn với chuỗi weekly thì INDEX là chuỗi 0,7,14,21,28,… cách nhau 7 ngày (nếu weekly tính cả thứ 7,chủ nhật).

    • Các lựa chọn sẵn có bao gồm: apply.daily, weekly, monthly, quarterly, yearly.

  • To-period apply function: Chuyển đổi dữ liệu theo chu kì

    • Chuyển từ chuỗi có chu kì nhỏ sang các chuỗi có chu kì lớn hơn (ví dụ convert chu kì daily to monthly).

    • Cú pháp: to.period(x, period = ‘months’, k = 1, indexAt, name = NULL, OHLC = TRUE, …).Argument period xác định chu kì (minutes, hourly,daily, weekly, monthly, quarterly, yearly), argument k xác định step của chi kì trong chuỗi, indexAt là định dạng của index sau khi chuỗi mới được trả về (các options: ‘yearmon’, ‘yearqtr’, ‘firstof’, ‘lastof’, ‘startof’, or ‘endof’ tương ứng với tháng, quí, đầu chu kì, cuối chu kì, thời điểm bắt đầu trong data ứng với chu kì,thời điểm kết thúc trong data ứng với chu kì).

    • Các lựa chọn gồm to.minutes, hourly, daily, weekly, monthly, quarterly, yearly.

    • Chú ý quan trọng: Cấu trúc trả về là khác nhau đối với hàm to.period và to.monthly (to.weekly, to.quarterly,…). to.period trả về một ngày trong khi to.months trả về kí tự dạng MMM YYYY. Tốt nhất là sử dụng to.period khi làm việc với time-series thông qua package lubridate.

library(xts)
xts.ts <- xts(rnorm(365),as.Date(1:365, origin="2017-01-01"))
head(xts.ts,5)
##                  [,1]
## 2017-01-02  0.6200392
## 2017-01-03  0.3675446
## 2017-01-04 -1.5804348
## 2017-01-05  0.9533404
## 2017-01-06 -1.1020823
#chuyen sang chuoi monthly index se mac dinh la MMM YYYY
to.monthly(xts.ts)
##          xts.ts.Open xts.ts.High xts.ts.Low xts.ts.Close
## Jan 2017   0.6200392    2.030875  -1.580435   1.17860446
## Feb 2017  -0.5731617    1.611427  -1.389570   1.47955947
## Mar 2017  -1.3966288    1.425489  -2.775869   0.17914160
## Apr 2017  -3.5372780    2.076780  -3.537278   0.32372241
## May 2017  -0.9838419    2.131725  -1.418283   0.61978625
## Jun 2017  -0.8063689    1.695426  -1.792664  -1.76416132
## Jul 2017  -0.3017958    2.014300  -2.430431   2.01429976
## Aug 2017   0.3763961    1.720896  -2.217577  -0.11435786
## Sep 2017  -0.8491778    1.633315  -2.316616  -0.52221360
## Oct 2017  -1.3268311    2.341232  -1.508046  -1.06835139
## Nov 2017  -0.1114068    2.232693  -2.920740  -2.92074013
## Dec 2017   0.0400984    2.573823  -2.780294  -0.03165621
## Jan 2018   1.4401843    1.440184   1.440184   1.44018430
#chuyen sang chuoi monthly index se mac dinh la YYYY-MM-DD
to.period(xts.ts,period = "month")
##            xts.ts.Open xts.ts.High xts.ts.Low xts.ts.Close
## 2017-01-31   0.6200392    2.030875  -1.580435   1.17860446
## 2017-02-28  -0.5731617    1.611427  -1.389570   1.47955947
## 2017-03-31  -1.3966288    1.425489  -2.775869   0.17914160
## 2017-04-30  -3.5372780    2.076780  -3.537278   0.32372241
## 2017-05-31  -0.9838419    2.131725  -1.418283   0.61978625
## 2017-06-30  -0.8063689    1.695426  -1.792664  -1.76416132
## 2017-07-31  -0.3017958    2.014300  -2.430431   2.01429976
## 2017-08-31   0.3763961    1.720896  -2.217577  -0.11435786
## 2017-09-30  -0.8491778    1.633315  -2.316616  -0.52221360
## 2017-10-31  -1.3268311    2.341232  -1.508046  -1.06835139
## 2017-11-30  -0.1114068    2.232693  -2.920740  -2.92074013
## 2017-12-31   0.0400984    2.573823  -2.780294  -0.03165621
## 2018-01-01   1.4401843    1.440184   1.440184   1.44018430

quantmod Functionality

Danh sách các function trong quantmod được kế thừa trong tidyquant:

tq_transmute_fun_options()$quantmod 
##  [1] "allReturns"      "annualReturn"    "ClCl"           
##  [4] "dailyReturn"     "Delt"            "HiCl"           
##  [7] "Lag"             "LoCl"            "LoHi"           
## [10] "monthlyReturn"   "Next"            "OpCl"           
## [13] "OpHi"            "OpLo"            "OpOp"           
## [16] "periodReturn"    "quarterlyReturn" "seriesAccel"    
## [19] "seriesDecel"     "seriesDecr"      "seriesHi"       
## [22] "seriesIncr"      "seriesLo"        "weeklyReturn"   
## [25] "yearlyReturn"

Các hàm này được chia vào các nhóm:

  • Percentage Change (Delt) and Lag Functions

    • Delt: Delt(x1, x2 = NULL, k = 0, type = c(“arithmetic”, “log”))

    • Sự thay đổi của Delt: Các chuỗi đơn Cl, Hi, Lo, Op hoặc giữa 2 chuỗi ClCl, HiCl, LoCl, LoHi, OpCl, OpHi, OpLo, OpOp.

    • Cú pháp: OpCl(OHLC)

    • Lag: Lag(x, k = 1) / Next: Next(x, k = 1) (Chúng ta cũng có thể sử dplyr::lag và dplyr::lead)

library(quantmod)
xts.ts <- xts(rnorm(20),as.Date(1:20, origin="2017-01-01"))
#I. Tinh percentage change theo phuong phap arithmetic (x1-x2)/x2
#cach thong thuong
xts.ts/lag(xts.ts,1)-1
##                   [,1]
## 2017-01-02          NA
## 2017-01-03 -12.7818604
## 2017-01-04  -0.1240810
## 2017-01-05  -1.1487769
## 2017-01-06  -5.9440155
## 2017-01-07  -3.1988608
## 2017-01-08  -1.2422515
## 2017-01-09   0.1679667
## 2017-01-10   1.4994604
## 2017-01-11  -1.5881392
## 2017-01-12   0.6486521
## 2017-01-13  -1.3021817
## 2017-01-14  -2.4028503
## 2017-01-15   0.1529896
## 2017-01-16  -2.6036702
## 2017-01-17  -2.3819594
## 2017-01-18   0.6360307
## 2017-01-19  -1.0816811
## 2017-01-20   8.9846157
## 2017-01-21   0.4029061
#dung ham Delt
Delt(xts.ts)
##            Delt.1.arithmetic
## 2017-01-02                NA
## 2017-01-03       -12.7818604
## 2017-01-04        -0.1240810
## 2017-01-05        -1.1487769
## 2017-01-06        -5.9440155
## 2017-01-07        -3.1988608
## 2017-01-08        -1.2422515
## 2017-01-09         0.1679667
## 2017-01-10         1.4994604
## 2017-01-11        -1.5881392
## 2017-01-12         0.6486521
## 2017-01-13        -1.3021817
## 2017-01-14        -2.4028503
## 2017-01-15         0.1529896
## 2017-01-16        -2.6036702
## 2017-01-17        -2.3819594
## 2017-01-18         0.6360307
## 2017-01-19        -1.0816811
## 2017-01-20         8.9846157
## 2017-01-21         0.4029061
#hai cach tra ve ket qua nhu nhau
#II. Tinh percentage change theo phuong phap log:log(x1/x2)
#cach thong thuong
log(xts.ts/lag(xts.ts,1))
##                  [,1]
## 2017-01-02         NA
## 2017-01-03        NaN
## 2017-01-04 -0.1324816
## 2017-01-05        NaN
## 2017-01-06        NaN
## 2017-01-07        NaN
## 2017-01-08        NaN
## 2017-01-09  0.1552644
## 2017-01-10  0.9160749
## 2017-01-11        NaN
## 2017-01-12  0.4999580
## 2017-01-13        NaN
## 2017-01-14        NaN
## 2017-01-15  0.1423582
## 2017-01-16        NaN
## 2017-01-17        NaN
## 2017-01-18  0.4922730
## 2017-01-19        NaN
## 2017-01-20  2.3010455
## 2017-01-21  0.3385459
#dung ham Delt
Delt(xts.ts,type = "log")
##            Delt.1.log
## 2017-01-02         NA
## 2017-01-03        NaN
## 2017-01-04 -0.1324816
## 2017-01-05        NaN
## 2017-01-06        NaN
## 2017-01-07        NaN
## 2017-01-08        NaN
## 2017-01-09  0.1552644
## 2017-01-10  0.9160749
## 2017-01-11        NaN
## 2017-01-12  0.4999580
## 2017-01-13        NaN
## 2017-01-14        NaN
## 2017-01-15  0.1423582
## 2017-01-16        NaN
## 2017-01-17        NaN
## 2017-01-18  0.4922730
## 2017-01-19        NaN
## 2017-01-20  2.3010455
## 2017-01-21  0.3385459
#Lay chuoi Lag.1
Lag(xts.ts,1)
##                  Lag.1
## 2017-01-02          NA
## 2017-01-03 -0.09501304
## 2017-01-04  1.11943036
## 2017-01-05  0.98053035
## 2017-01-06 -0.14588027
## 2017-01-07  0.72123433
## 2017-01-08 -1.58589392
## 2017-01-09  0.38418519
## 2017-01-10  0.44871552
## 2017-01-11  1.12154670
## 2017-01-12 -0.65962554
## 2017-01-13 -1.08749303
## 2017-01-14  0.32862047
## 2017-01-15 -0.46100534
## 2017-01-16 -0.53153436
## 2017-01-17  0.85240580
## 2017-01-18 -1.17799022
## 2017-01-19 -1.92722812
## 2017-01-20  0.15741802
## 2017-01-21  1.57175846
#Lay chuoi Next.1
Next(xts.ts,1)
##                  Next
## 2017-01-02  1.1194304
## 2017-01-03  0.9805304
## 2017-01-04 -0.1458803
## 2017-01-05  0.7212343
## 2017-01-06 -1.5858939
## 2017-01-07  0.3841852
## 2017-01-08  0.4487155
## 2017-01-09  1.1215467
## 2017-01-10 -0.6596255
## 2017-01-11 -1.0874930
## 2017-01-12  0.3286205
## 2017-01-13 -0.4610053
## 2017-01-14 -0.5315344
## 2017-01-15  0.8524058
## 2017-01-16 -1.1779902
## 2017-01-17 -1.9272281
## 2017-01-18  0.1574180
## 2017-01-19  1.5717585
## 2017-01-20  2.2050296
## 2017-01-21         NA
#Map cac chuoi vua lay voi chuoi ban dau
Lag(xts.ts,1) %>% merge(xts.ts) %>% merge(Next(xts.ts,1))
##                  Lag.1      xts.ts       Next
## 2017-01-02          NA -0.09501304  1.1194304
## 2017-01-03 -0.09501304  1.11943036  0.9805304
## 2017-01-04  1.11943036  0.98053035 -0.1458803
## 2017-01-05  0.98053035 -0.14588027  0.7212343
## 2017-01-06 -0.14588027  0.72123433 -1.5858939
## 2017-01-07  0.72123433 -1.58589392  0.3841852
## 2017-01-08 -1.58589392  0.38418519  0.4487155
## 2017-01-09  0.38418519  0.44871552  1.1215467
## 2017-01-10  0.44871552  1.12154670 -0.6596255
## 2017-01-11  1.12154670 -0.65962554 -1.0874930
## 2017-01-12 -0.65962554 -1.08749303  0.3286205
## 2017-01-13 -1.08749303  0.32862047 -0.4610053
## 2017-01-14  0.32862047 -0.46100534 -0.5315344
## 2017-01-15 -0.46100534 -0.53153436  0.8524058
## 2017-01-16 -0.53153436  0.85240580 -1.1779902
## 2017-01-17  0.85240580 -1.17799022 -1.9272281
## 2017-01-18 -1.17799022 -1.92722812  0.1574180
## 2017-01-19 -1.92722812  0.15741802  1.5717585
## 2017-01-20  0.15741802  1.57175846  2.2050296
## 2017-01-21  1.57175846  2.20502959         NA
#Ket cho thay Lag va Next cua chuoi da khop
  • Period Return Functions:

    • Trả về lợi suất arithmetic hoặc logarithmic cho các chu kì khác nhau như daily, weekly, monthly, quarterly, and yearly.

    • Cú pháp: periodReturn(x, period = ‘monthly’, subset = NULL, type = ‘arithmetic’, leading = TRUE, …).

  • Series Functions:

    • Trả về mô tả của chuỗi. Các lựa chọn bao gồm increases/decreases, acceleration/deceleration, and hi/low.

    • Cú pháp: seriesHi(x), seriesIncr(x, thresh = 0, diff. = 1L), seriesAccel(x)

  library(xts)
  xts.ts <- xts(rnorm(365),as.Date(1:365, origin="2017-01-01"))
  #Loi xuat cao nhat cua chuoi
  seriesHi(xts.ts)
##                [,1]
## 2017-11-25 2.942423
  #Loi xuat thap nhat cua chuoi
  seriesLo(xts.ts)
##                 [,1]
## 2017-08-31 -3.234755
  #Danh dau chuoi tang
  head(seriesIncr(xts.ts))
##             [,1]
## 2017-01-02    NA
## 2017-01-03 FALSE
## 2017-01-04  TRUE
## 2017-01-05 FALSE
## 2017-01-06  TRUE
## 2017-01-07 FALSE
  #Danh dau chuoi giam
  head(seriesDecr(xts.ts))
##             [,1]
## 2017-01-02    NA
## 2017-01-03  TRUE
## 2017-01-04 FALSE
## 2017-01-05  TRUE
## 2017-01-06 FALSE
## 2017-01-07  TRUE
  #Merge voi du lieu goc
  xts.ts %>% merge(Incr = seriesIncr(xts.ts)) %>% merge(Decr = seriesDecr(xts.ts)) %>% head(10)
##                      . Incr Decr
## 2017-01-02 -0.02180990   NA   NA
## 2017-01-03 -0.59010538    0    1
## 2017-01-04  0.31238179    1    0
## 2017-01-05 -1.26904563    0    1
## 2017-01-06  1.22682152    1    0
## 2017-01-07 -0.07853973    0    1
## 2017-01-08  0.22567012    1    0
## 2017-01-09 -0.02322978    0    1
## 2017-01-10 -0.77539230    0    1
## 2017-01-11 -1.31498046    0    1

TTR Functionality

Danh sách các hàm của TTR được liệt kê bên dưới:

tq_transmute_fun_options()$TTR 
##  [1] "adjRatios"          "ADX"                "ALMA"              
##  [4] "aroon"              "ATR"                "BBands"            
##  [7] "CCI"                "chaikinAD"          "chaikinVolatility" 
## [10] "CLV"                "CMF"                "CMO"               
## [13] "DEMA"               "DonchianChannel"    "DPO"               
## [16] "DVI"                "EMA"                "EMV"               
## [19] "EVWMA"              "GMMA"               "growth"            
## [22] "HMA"                "KST"                "lags"              
## [25] "MACD"               "MFI"                "momentum"          
## [28] "OBV"                "PBands"             "ROC"               
## [31] "rollSFM"            "RSI"                "runCor"            
## [34] "runCov"             "runMAD"             "runMax"            
## [37] "runMean"            "runMedian"          "runMin"            
## [40] "runPercentRank"     "runSD"              "runSum"            
## [43] "runVar"             "SAR"                "SMA"               
## [46] "SMI"                "SNR"                "stoch"             
## [49] "TDI"                "TRIX"               "ultimateOscillator"
## [52] "VHF"                "VMA"                "volatility"        
## [55] "VWAP"               "VWMA"               "wilderSum"         
## [58] "williamsAD"         "WMA"                "WPR"               
## [61] "ZigZag"             "ZLEMA"

Bên dưới là các mô tả phổ biến cho các hàm của TTR package:

  • Welles Wilder’s Directional Movement Index:

    • ADX(HLC, n = 14, maType, …)
  • Bollinger Bands:

    • BBands(HLC, n = 20, maType, sd = 2, …): Bollinger Bands
  • Rate of Change / Momentum:

    • ROC(x, n = 1, type = c(“continuous”, “discrete”), na.pad = TRUE): Rate of Change

    • momentum(x, n = 1, na.pad = TRUE): Momentum

  • Moving Averages (maType):

    • SMA(x, n = 10, …): Simple Moving Average

    • EMA(x, n = 10, wilder = FALSE, ratio = NULL, …): Exponential Moving Average

    • DEMA(x, n = 10, v = 1, wilder = FALSE, ratio = NULL): Double Exponential Moving Average

    • WMA(x, n = 10, wts = 1:n, …): Weighted Moving Average

    • EVWMA(price, volume, n = 10, …): Elastic, Volume-Weighted Moving Average

    • ZLEMA(x, n = 10, ratio = NULL, …): Zero Lag Exponential Moving Average

    • VWAP(price, volume, n = 10, …): Volume-Weighted Moving Average Price

    • VMA(x, w, ratio = 1, …): Variable-Length Moving Average

    • HMA(x, n = 20, …): Hull Moving Average

    • ALMA(x, n = 9, offset = 0.85, sigma = 6, …): Arnaud Legoux Moving Average

  • MACD Oscillator:

    • MACD(x, nFast = 12, nSlow = 26, nSig = 9, maType, percent = TRUE, …)
  • Relative Strength Index:

    • RSI(price, n = 14, maType, …)
  • runFun:

    • runSum(x, n = 10, cumulative = FALSE): returns sums over a n-period moving window.

    • runMin(x, n = 10, cumulative = FALSE): returns minimums over a n-period moving window.

    • runMax(x, n = 10, cumulative = FALSE): returns maximums over a n-period moving window.

    • runMean(x, n = 10, cumulative = FALSE): returns means over a n-period moving window.

    • runMedian(x, n = 10, non.unique = “mean”, cumulative = FALSE): returns medians over a n-period moving window.

    • runCov(x, y, n = 10, use = “all.obs”, sample = TRUE, cumulative = FALSE): returns covariances over a n-period moving window.

    • runCor(x, y, n = 10, use = “all.obs”, sample = TRUE, cumulative = FALSE): returns correlations over a n-period moving window.

    • runVar(x, y = NULL, n = 10, sample = TRUE, cumulative = FALSE): returns variances over a n-period moving window.

    • runSD(x, n = 10, sample = TRUE, cumulative = FALSE): returns standard deviations over a n-period moving window.

    • runMAD(x, n = 10, center = NULL, stat = “median”, constant = 1.4826, non.unique = “mean”, cumulative = FALSE): returns median/mean absolute deviations over a n-period moving window.

    • wilderSum(x, n = 10): retuns a Welles Wilder style weighted sum over a n-period moving window.

  • Stochastic Oscillator / Stochastic Momentum Index:

    • stoch(HLC, nFastK = 14, nFastD = 3, nSlowD = 3, maType, bounded = TRUE, smooth = 1, …): Stochastic Oscillator

    • SMI(HLC, n = 13, nFast = 2, nSlow = 25, nSig = 9, maType, bounded = TRUE, …): Stochastic Momentum Index

PerformanceAnalytics Functionality

tq_transmute_fun_options()$PerformanceAnalytics 
## [1] "Return.annualized"        "Return.annualized.excess"
## [3] "Return.clean"             "Return.cumulative"       
## [5] "Return.excess"            "Return.Geltner"          
## [7] "zerofill"

Các hàm của PerformanceAnalytics được sử dụng để tính toán các returns:

  • Return.annualized và Return.annualized.excess: TÌnh toán lợi suất theo năm .

  • Return.clean: Loại bỏ các outlier khỏi return

  • Return.excess: Loại bỏ các risk-free rate từ return tới yield returns

  • zerofill: Replace các giá trị NA bằng zeros.