Research Article
An Empirical Study of Machine Learning Algorithms for Stock Daily Trading Strategy
Algorithm 2
Backtesting algorithm of daily trading strategy in R language.
Input: TS #TS is trading signals of a stock. | |
Output: AR, PR, RR, F1, AUC, WR, ARR, ASR, MDD | |
(1) N=length of Stock Code List #424 SPICS, and 185 CSICS. | |
(2) =Benchmark Index [“Closing Price”] # B is the closing price of benchmark index. | |
(3) WR=NULL; ARR=NULL; ASR=NULL; MDD=NULL | |
(4) for (i in 1: N) | |
(5) Stock Data=Stock Code List[i] | |
(6) =Stock_Data [“Closing Price”] | |
(7) = Stock_Data [“Label”] | |
(8) =(-)/ # BDRR is the daily return rate of benchmark index. | |
(9) = (-)/ #DRR is daily return rate. That is daily return rate of BAH strategy. | |
(10) =lag ()DR #TDRR is the daily return through trading. | |
(11) Table=Confusion_Matrix(TS, Label) | |
(12) AR[i]=sum(adj(Table))/sum(Table) | |
(13) PR[i]=Table/sum(Table) | |
(14) RR[i]=Table/sum(Table) | |
(15) F1=2PR[i]RR[i]/(PR[i]+RR[i]) | |
(16) Pred=prediction (TS, Label) | |
(17) AUC[i]=performance (Pred, measure=“auc”)@y.values | |
(18) WR[i]=sum (TDRR>0)/sum(TDRR≠0) | |
(19) ARR[i]=Return.annualized (TDRR)# TDRR, BDRR, or DRR can be used. | |
(20) ASR[i]=SharpeRatio.annualized (TDRR)# TDRR, BDRR, or DRR can be used. | |
(21) MDD[i]=maxDrawDown (TDRR)# TDRR, BDRR, or DRR can be used. | |
(22) AR=c (AR, AR[i]) | |
(23) PR=c (PR, PR[i]) | |
(24) RR=c (RR, RR[i]) | |
(25) F1=c (F1, F1[i]) | |
(26) AUC=c (AUC, AUC[i]) | |
(27) WR=c (WR, WR[i]) | |
(28) ARR=c (ARR, ARR[i]) | |
(29) ASR=c (ASR, ASR[i]) | |
(30) MDD=c (MDD, MDD[i]) | |
(31) | |
(32) Performance=cbind (AR, PR, RR, F1, AUC, WR, ARR, ASR, MDD) | |
(33) return (Performance) |