Alpha158因子构建公式
由bigquantfactorbuilder1创建,最终由bigquantfactorbuilder1 被浏览 8 用户
Qlib 官方原版 Alpha158 全158因子
一、K线基础因子(9)
- KMID = (close - open) / open
- KLEN = (high - low) / open
- KMID2 = (close - open) / (high - low)
- KUP = (high - Max(open, close)) / open
- KUP2 = (high - Max(open, close)) / (high - low)
- KLOW = (Min(open, close) - low) / open
- KLOW2 = (Min(open, close) - low) / (high - low)
- KSFT = (2 * close - high - low) / open
- KSFT2 = (2 * close - high - low) / (high - low)
二、静态价格因子(4)
- OPEN0 = open / close
- HIGH0 = high / close
- LOW0 = low / close
- VWAP0 = vwap / close
三、趋势类因子(5×5=25)
- ROC5 = close / Ref(close, 5)
- ROC10 = close / Ref(close, 10)
- ROC20 = close / Ref(close, 20)
- ROC30 = close / Ref(close, 30)
- ROC60 = close / Ref(close, 60)
- MA5 = Mean(close, 5) / close
- MA10 = Mean(close, 10) / close
- MA20 = Mean(close, 20) / close
- MA30 = Mean(close, 30) / close
- MA60 = Mean(close, 60) / close
- BETA5 = Slope(close, 5) / close
- BETA10 = Slope(close, 10) / close
- BETA20 = Slope(close, 20) / close
- BETA30 = Slope(close, 30) / close
- BETA60 = Slope(close, 60) / close
- RSQR5 = Rsquare(close, 5)
- RSQR10 = Rsquare(close, 10)
- RSQR20 = Rsquare(close, 20)
- RSQR30 = Rsquare(close, 30)
- RSQR60 = Rsquare(close, 60)
- RESI5 = Resi(close, 5) / close
- RESI10 = Resi(close, 10) / close
- RESI20 = Resi(close, 20) / close
- RESI30 = Resi(close, 30) / close
- RESI60 = Resi(close, 60) / close
四、波动类因子(6×5=30)
- STD5 = Std(close, 5) / close
- STD10 = Std(close, 10) / close
- STD20 = Std(close, 20) / close
- STD30 = Std(close, 30) / close
- STD60 = Std(close, 60) / close
- MAX5 = Max(high, 5) / close
- MAX10 = Max(high, 10) / close
- MAX20 = Max(high, 20) / close
- MAX30 = Max(high, 30) / close
- MAX60 = Max(high, 60) / close
- MIN5 = Min(low, 5) / close
- MIN10 = Min(low, 10) / close
- MIN20 = Min(low, 20) / close
- MIN30 = Min(low, 30) / close
- MIN60 = Min(low, 60) / close
- QTLU5 = Quantile(close, 5, 0.8) / close
- QTLU10 = Quantile(close, 10, 0.8) / close
- QTLU20 = Quantile(close, 20, 0.8) / close
- QTLU30 = Quantile(close, 30, 0.8) / close
- QTLU60 = Quantile(close, 60, 0.8) / close
- QTLD5 = Quantile(close, 5, 0.2) / close
- QTLD10 = Quantile(close, 10, 0.2) / close
- QTLD20 = Quantile(close, 20, 0.2) / close
- QTLD30 = Quantile(close, 30, 0.2) / close
- QTLD60 = Quantile(close, 60, 0.2) / close
- RSV5 = (close - Min(low, 5)) / (Max(high, 5) - Min(low, 5))
- RSV10 = (close - Min(low, 10)) / (Max(high, 10) - Min(low, 10))
- RSV20 = (close - Min(low, 20)) / (Max(high, 20) - Min(low, 20))
- RSV30 = (close - Min(low, 30)) / (Max(high, 30) - Min(low, 30))
- RSV60 = (close - Min(low, 60)) / (Max(high, 60) - Min(low, 60))
五、极值位置类因子(3×5=15)
- IMAX5 = IdxMax(high, 5) / 5
- IMAX10 = IdxMax(high, 10) / 10
- IMAX20 = IdxMax(high, 20) / 20
- IMAX30 = IdxMax(high, 30) / 30
- IMAX60 = IdxMax(high, 60) / 60
- IMIN5 = IdxMin(low, 5) / 5
- IMIN10 = IdxMin(low, 10) / 10
- IMIN20 = IdxMin(low, 20) / 20
- IMIN30 = IdxMin(low, 30) / 30
- IMIN60 = IdxMin(low, 60) / 60
- IMXD5 = (IdxMax(high, 5) - IdxMin(low, 5)) / 5
- IMXD10 = (IdxMax(high, 10) - IdxMin(low, 10)) / 10
- IMXD20 = (IdxMax(high, 20) - IdxMin(low, 20)) / 20
- IMXD30 = (IdxMax(high, 30) - IdxMin(low, 30)) / 30
- IMXD60 = (IdxMax(high, 60) - IdxMin(low, 60)) / 60
六、价量统计类因子(9×5=45)
- CORR5 = Corr(close, Log(volume+1), 5)
- CORR10 = Corr(close, Log(volume+1), 10)
- CORR20 = Corr(close, Log(volume+1), 20)
- CORR30 = Corr(close, Log(volume+1), 30)
- CORR60 = Corr(close, Log(volume+1), 60)
- CORD5 = Corr(close/Ref(close,1), Log(volume/Ref(volume,1)+1), 5)
- CORD10 = Corr(close/Ref(close,1), Log(volume/Ref(volume,1)+1), 10)
- CORD20 = Corr(close/Ref(close,1), Log(volume/Ref(volume,1)+1), 20)
- CORD30 = Corr(close/Ref(close,1), Log(volume/Ref(volume,1)+1), 30)
- CORD60 = Corr(close/Ref(close,1), Log(volume/Ref(volume,1)+1), 60)
- CNTP5 = Mean(close > Ref(close,1), 5)
- CNTP10 = Mean(close > Ref(close,1), 10)
- CNTP20 = Mean(close > Ref(close,1), 20)
- CNTP30 = Mean(close > Ref(close,1), 30)
- CNTP60 = Mean(close > Ref(close,1), 60)
- CNTN5 = Mean(close < Ref(close,1), 5)
- CNTN10 = Mean(close < Ref(close,1), 10)
- CNTN20 = Mean(close < Ref(close,1), 20)
- CNTN30 = Mean(close < Ref(close,1), 30)
- CNTN60 = Mean(close < Ref(close,1), 60)
- CNTD5 = Mean(close>Ref(close,1),5) - Mean(close<Ref(close,1),5)
- CNTD10 = Mean(close>Ref(close,1),10) - Mean(close<Ref(close,1),10)
- CNTD20 = Mean(close>Ref(close,1),20) - Mean(close<Ref(close,1),20)
- CNTD30 = Mean(close>Ref(close,1),30) - Mean(close<Ref(close,1),30)
- CNTD60 = Mean(close>Ref(close,1),60) - Mean(close<Ref(close,1),60)
- SUMP5 = Sum(Max(close-Ref(close,1),0),5) / Sum(Abs(close-Ref(close,1)),5)
- SUMP10 = Sum(Max(close-Ref(close,1),0),10) / Sum(Abs(close-Ref(close,1)),10)
- SUMP20 = Sum(Max(close-Ref(close,1),0),20) / Sum(Abs(close-Ref(close,1)),20)
- SUMP30 = Sum(Max(close-Ref(close,1),0),30) / Sum(Abs(close-Ref(close,1)),30)
- SUMP60 = Sum(Max(close-Ref(close,1),0),60) / Sum(Abs(close-Ref(close,1)),60)
- SUMN5 = Sum(Max(Ref(close,1)-close,0),5) / Sum(Abs(close-Ref(close,1)),5)
- SUMN10 = Sum(Max(Ref(close,1)-close,0),10) / Sum(Abs(close-Ref(close,1)),10)
- SUMN20 = Sum(Max(Ref(close,1)-close,0),20) / Sum(Abs(close-Ref(close,1)),20)
- SUMN30 = Sum(Max(Ref(close,1)-close,0),30) / Sum(Abs(close-Ref(close,1)),30)
- SUMN60 = Sum(Max(Ref(close,1)-close,0),60) / Sum(Abs(close-Ref(close,1)),60)
- SUMD5 = (Sum(Max(close-Ref(close,1),0),5) - Sum(Max(Ref(close,1)-close,0),5)) / Sum(Abs(close-Ref(close,1)),5)
- SUMD10 = (Sum(Max(close-Ref(close,1),0),10) - Sum(Max(Ref(close,1)-close,0),10)) / Sum(Abs(close-Ref(close,1)),10)
- SUMD20 = (Sum(Max(close-Ref(close,1),0),20) - Sum(Max(Ref(close,1)-close,0),20)) / Sum(Abs(close-Ref(close,1)),20)
- SUMD30 = (Sum(Max(close-Ref(close,1),0),30) - Sum(Max(Ref(close,1)-close,0),30)) / Sum(Abs(close-Ref(close,1)),30)
- SUMD60 = (Sum(Max(close-Ref(close,1),0),60) - Sum(Max(Ref(close,1)-close,0),60)) / Sum(Abs(close-Ref(close,1)),60)
- BETA5 = Slope(close, 5) / close
- BETA10 = Slope(close, 10) / close
- BETA20 = Slope(close, 20) / close
- BETA30 = Slope(close, 30) / close
- BETA60 = Slope(close, 60) / close
七、成交量波动类因子(2×5=10)
- VMA5 = Mean(volume, 5) / volume
- VMA10 = Mean(volume, 10) / volume
- VMA20 = Mean(volume, 20) / volume
- VMA30 = Mean(volume, 30) / volume
- VMA60 = Mean(volume, 60) / volume
- VSTD5 = Std(volume, 5) / volume
- VSTD10 = Std(volume, 10) / volume
- VSTD20 = Std(volume, 20) / volume
- VSTD30 = Std(volume, 30) / volume
- VSTD60 = Std(volume, 60) / volume
八、量价加权统计因子(4×5=20)
- WVMA5 = Std(Abs(close/Ref(close,1)-1)*volume,5) / Mean(Abs(close/Ref(close,1)-1)*volume,5)
- WVMA10 = Std(Abs(close/Ref(close,1)-1)*volume,10) / Mean(Abs(close/Ref(close,1)-1)*volume,10)
- WVMA20 = Std(Abs(close/Ref(close,1)-1)*volume,20) / Mean(Abs(close/Ref(close,1)-1)*volume,20)
- WVMA30 = Std(Abs(close/Ref(close,1)-1)*volume,30) / Mean(Abs(close/Ref(close,1)-1)*volume,30)
- WVMA60 = Std(Abs(close/Ref(close,1)-1)*volume,60) / Mean(Abs(close/Ref(close,1)-1)*volume,60)
- VSUMP5 = Sum(Max(volume-Ref(volume,1),0),5) / Sum(Abs(volume-Ref(volume,1)),5)
- VSUMP10 = Sum(Max(volume-Ref(volume,1),0),10) / Sum(Abs(volume-Ref(volume,1)),10)
- VSUMP20 = Sum(Max(volume-Ref(volume,1),0),20) / Sum(Abs(volume-Ref(volume,1)),20)
- VSUMP30 = Sum(Max(volume-Ref(volume,1),0),30) / Sum(Abs(volume-Ref(volume,1)),30)
- VSUMP60 = Sum(Max(volume-Ref(volume,1),0),60) / Sum(Abs(volume-Ref(volume,1)),60)
- VSUMN5 = Sum(Max(Ref(volume,1)-volume,0),5) / Sum(Abs(volume-Ref(volume,1)),5)
- VSUMN10 = Sum(Max(Ref(volume,1)-volume,0),10) / Sum(Abs(volume-Ref(volume,1)),10)
- VSUMN20 = Sum(Max(Ref(volume,1)-volume,0),20) / Sum(Abs(volume-Ref(volume,1)),20)
- VSUMN30 = Sum(Max(Ref(volume,1)-volume,0),30) / Sum(Abs(volume-Ref(volume,1)),30)
- VSUMN60 = Sum(Max(Ref(volume,1)-volume,0),60) / Sum(Abs(volume-Ref(volume,1)),60)
- VSUMD5 = (Sum(Max(volume-Ref(volume,1),0),5) - Sum(Max(Ref(volume,1)-volume,0),5)) / Sum(Abs(volume-Ref(volume,1)),5)
- VSUMD10 = (Sum(Max(volume-Ref(volume,1),0),10) - Sum(Max(Ref(volume,1)-volume,0),10)) / Sum(Abs(volume-Ref(volume,1)),10)
- VSUMD20 = (Sum(Max(volume-Ref(volume,1),0),20) - Sum(Max(Ref(volume,1)-volume,0),20)) / Sum(Abs(volume-Ref(volume,1)),20)
- VSUMD30 = (Sum(Max(volume-Ref(volume,1),0),30) - Sum(Max(Ref(volume,1)-volume,0),30)) / Sum(Abs(volume-Ref(volume,1)),30)
- VSUMD60 = (Sum(Max(volume-Ref(volume,1),0),60) - Sum(Max(Ref(volume,1)-volume,0),60)) / Sum(Abs(volume-Ref(volume,1)),60)
\