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)