@Channelchan
2018-10-20T23:05:06.000000Z
字数 7724
阅读 2730
如须调用该因子,将add_data=False改为True.可自行将因子名字value更改.收盘价在部分数据没有close_adj的情况下,使用close即可,其他high、low同理.
TVMA20 G010024A
因子描述: 20日成交金额的移动平均值(20-day Turnover Value Moving Average)。
计算方法:
TVMA = MA(value, N)
N=20. 入库除以le6。
value = dv.add_formula("TVMA20_J", "Ts_Mean(turnover,20)" ,
is_quarterly=False, add_data=False)
TVMA6 G010025A
因子描述: 6日成交金额的移动平均值(6-day Turnover Value Moving Average)。
计算方法:
TVMA =MA(value, N)
N=6。入库除以le6
TVMA6 = dv.add_formula('TVMA6_G',"Ta('MA',0,0,0,0,turnover,0,6)"
, is_quarterly=False, add_data=False)
TVSTD20 G010026A
因子描述: 20日成交金额的标准差(20-day Turnover Value Standard Deviation)
计算方法:
TVSTD = sd(value, N)
N=20。入库除以le6.
dv.add_field('turnover')
TVSTD20_j = dv.add_formula('TVSTD20_j', 'StdDev(turnover,20)/Pow(10,6)'
, is_quarterly=False, add_data=False)
TVSTD6 G010027A
因子描述: 6日成交金额的标准差(6-day Turnover Value Standard Deviation)。
计算方法:
TVSTD = sd(value, N)
N=6。入库除以le6。
dv.add_field('turnover')
TVSTD6_j = dv.add_formula('TVSTD6_j', 'StdDev(turnover,6)/Pow(10,6)'
, is_quarterly=False, add_data=False)
VDEA G010028A
因子描述:计算VMACD因子的中间变量( Volume Difference Exponential Average ) 。
计算方法:
VDIFF = EMA(volume, 12) - EMA(volume, 26)
DEA为VDIFF的M日指数移动平均: DEA = EMA(VDIFF, M) , 通常M = 9.
dv.add_field("volume")
EMA12 = dv.get_ts('volume').ewm(span=12, adjust=False).mean()
EMA26 = dv.get_ts('volume').ewm(span=26, adjust=False).mean()
VDIFF = EMA12 - EMA26
vdeas = VDIFF.ewm(span=9, adjust=False).mean()
dv.append_df(vdeas, 'vdeas')
VDIFF G010029A
因子描述:计算VMACD因子的中间变量(Volume difference)。
计算方法:
VDIFF = EMA(volume, 12) - EMA(volume, 26)
dv.add_field("volume")
EMA12 = dv.get_ts('volume').ewm(span=12, adjust=False).mean()
EMA26 = dv.get_ts('volume').ewm(span=26, adjust=False).mean()
VDIFF = EMA12 - EMA26
dv.append_df(VDIFF, 'VDIFF_J', is_quarterly=False)
VEMA10 G010030A
因子描述:成交量的指数移动平均(10-day Exponential moving average of volume)。
计算方法:
VEMA = EMA(volume, N)
N取10。
VEMA10_X = dv.add_formula('VEMA10_X', "Ta('EMA',0,0,0,0,volume,0,10)" ,
is_quarterly=False, add_data=False)
VEMA12 G010031A
因子描述:成交量的指数移动平均(12-day Exponential moving average of volume)。
计算方法:
VEMA = EMA(volume, N)
N取12。
VEMA12_X = dv.add_formula('VEMA12_X', "Ta('EMA',0,0,0,0,volume,0,12)" ,
is_quarterly=False, add_data=False)
VEMA26 G010032A
因子描述:成交量的指数移动平均。(26-day Exponential moving average of volume)
计算方法:
VEMA = EMA(volume, N)
N取26。
VEMA26 = dv.add_formula('VEMA26_J', "Ta('EMA',0,0,0,0,volume,0,26)" ,
is_quarterly=False, add_data=False)
VEMA5 G010033A
因子描述:成交量的指数移动平均。(5-day Exponential moving average of volume)
计算方法:
VEMA = EMA(volume, N)
N=5
VEMA5 = dv.add_formula('VEMA5_J', "Ta('EMA',0,0,0,0,volume,0,5)" ,
is_quarterly=False,add_data=False)
VMACD G010034A
因子描述:量指数平滑异同移动平均线( VolumeMoving Average Convergence and Divergence)。是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线VMACD的意义和MACO基本相同,但VMACD取用的数据源是成交量,MACO取用的数据源是成交价格。
计算方法:
dv.add_formula('VDIFF_',"Ta('EMA',0,0,0,0,volume,0,12)-Ta('EMA',0,0,0,0,volume,0,26)",
is_quarterly=False, add_data=True)
dv.add_formula('VDEA_',"Ta('EMA',0,0,0,0,VDIFF_,0,9)",
is_quarterly=False, add_data=True)
VMACD_J = dv.add_formula('VMACD_J',"VDIFF_-VDEA_", is_quarterly=False, add_data=False)
VOL10 G010035A
因子描述: 10日平均换手率(10-day Turnover Rate)。
计算方法:
最近10个交易日的平均换手率
value = dv.add_formula('VOL10_J', "Ts_Mean(turnover_ratio,10)" ,
is_quarterly=False, add_data=False)
VOL120 G010036A
因子描述:120日平均换手率(120-day Turnover Rate)。
计算方法:
最近120个交易日的平均换手率
VOL120 = dv.add_formula('VOL120_J', "Ts_Mean(turnover_ratio,120)",
is_quarterly=False, add_data=False)
VOL20 G010037A
因子描述: 20日平均换手率(20-day Turnover Rate)。
计算方法:
最近20个交易日的平均换手率
VOL20 = dv.add_formula('VOL20_J', "Ts_Mean(turnover_ratio,20)" ,
is_quarterly=False, add_data=False)
VOL240 G010038A
因子描述: 240日平均换手率(240-day Turnover Rate)。
计算方法:
最近240个交易日的平均换手率。
VOL240 = dv.add_formula('VOL240_J', "Ts_Mean(turnover_ratio,240)",
is_quarterly=False, add_data=False)
VOL5 G010039A
因子描述: 5日平均换手率(5-day Turnover Rate)。
计算方法:
最近5个交易日的平均换手率。
VOL5 = dv.add_formula('VOL5_J', "Ts_Mean(turnover_ratio,5)",
is_quarterly=False, add_data=False)
VOL60 G010040A
因子描述: 60日平均换手率 (60 -day Turnover Rate)。
计算方法:
最近60个交易日的平均换手率。
VOL60 = dv.add_formula('VOL60_J', "Ts_Mean(turnover_ratio,60)",
is_quarterly=False, add_data=False)
VOSC G010041A
因子描述:成交量震荡(Volume Oscilltaor) , 又称移动平均成交量指标,但它并非仅仅计算成交量的移动平均线,而是通过对成交量的长期移动平均线和短期移动平均线之间的比较,分析成交量的运行趋势和及时研判趋势转变方向。
计算方法:
VOSC = 100 * (MA(volume, 12) - MA(volume, 26 )) / MA(volume, 12)
VOSC = dv.add_formula('VOSC_J',"100*(Ta('MA',0,0,0,0,volume,0,12)-Ta('MA',0,0,0,0,volume,0,26))/(Ta('MA',0,0,0,0,volume,0,12))",is_quarterly=False, add_data=False)
VR G010042A
因子描述:成交量比率(Volume Rtaio) 。 通过分析股价上升日成交额(或成交量,下同)与股价下降日成交额比值,从而掌握市场买卖气势的中期技术指标。
计算方法:
对任一交易日,若close > prev_close , 当日成交量为AV, 否则AV=0。将N日内AV加和后记为AVS.
对任一交易日,若close< prev_close , 当日成交量为BV , 否则BV= 0。 将N日内BV加和后记为BVS。
对任一交易日,若close= prev_close , 当日成交量为CV, 否则CV= 0。 将N 日内CV加和后记为CVS。
VR = (AVS + CVS / 2) / (BVS + CVS / 2)。
N取24, 即24个交易日。
BVS = dv.add_formula('BVS','Ts_Sum(If(close_adj<Delay(close_adj, 1), volume, 0), 24)' ,
add_data=True, is_quarterly=False)
AVS = dv.add_formula('AVS','Ts_Sum(If(close_adj>Delay(close_adj, 1), volume, 0), 24)' ,
add_data=True, is_quarterly=False)
CVS = dv.add_formula('CVS', 'Ts_Sum(If(close == Delay(close, 1), volume, 0), 24)',
add_data=True, is_quarterly=False)
VR = dv.add_formula('VR1', '(AVS+CVS/2)/(BVS+CVS/2)', add_data=False, is_quarterly=False)
VROC12 G010043A
因子描述: 12日量变动速率指标(12-day Volume Rate of Change)。以今天的成交量和N天前的成交量比较,通过计算某一段时间内成交量变动的幅度,应用成交进的移动比较来测足成交量运动趋向,达到事先探测成交量供需的强弱,进而分析成交量的发展趋势及其将来是否有转势的意愿,属于成交量的反趋向指标。
计算方法:
(volume/volume(t-N)-1)*100
N=12
VROC12 = dv.add_formula('VROC12_J', "(volume/Delay(volume,12)-1)*100",
is_quarterly=False, add_data=False)
VROC6 G010044A
因子描述: 6日量变动速率指标(6-day Volume Rate of Change)。以今天的成交量和N天前的成交量比较,通过计算某一段时间内成交量变动的幅度,应用成交量的移动比较来测足成交量运动趋向,达到事先探测成交量供需的强弱,进而分析成交量的发展趋势及其将来是否有转势的意愿,属于成交量的反趋向指标。
计算方法:
(volume/volume(t-N)-1)*100
N=6
VROC6 = dv.add_formula('VROC6_J', "(volume/Delay(volume,6)-1)*100",
is_quarterly=False, add_data=False)
VSTD10 G010045A
因子描述: 10日成交量标准差(10-day Volume Standard Deviation)。考察成交量的波动程度。
计算方法:
VSTD = sd(volume, N)
N取10.
VSTD10_J = dv.add_formula('VSTD10_J',"StdDev(volume,10)", is_quarterly=False, add_data=False)
VSTD20 G010046A
因子描述: 20日成交量标准差(20-day Volume Standard Deviation)。考察成交量的波动程度。
计算方法:
VSTD = sd(volume, N)
N取20.
VSTD_20 = dv.add_formula('VSTD_20', "StdDev(volume,20)" , is_quarterly=False, add_data=False)
MoneyFlow20 G010048A
因子描述:资金流量(20-day money flow)。用收盘价,最高价及最低价的均值乘以当日成交量即可得到该交易日的资金流量。
计算方法:
MoneyFlow=Sum((close+high+low)*volume/3,N)
N=20
MoneyFlow20 = dv.add_formula('MoneyFlow20_J', "Ts_Sum((close+high+low)*volume/3,20)",
is_quarterly=False, add_data=False)
DAVOL5 G010049A
因子描述:相对5日相对120曰平均换手率(Difference between 5-day average turnover rate and 120 -day average turnover rate)。
计算方法:
DAVOLS = VOL5 - VOL 120
最近一段时间的日平均换手率相对于120个交易日的变化。计算了5个交易日的结果。
DAVOL5 = dv.add_formula('DAVOL5_J', "Ts_Mean(turnover_ratio,5)-Ts_Mean(turnover_ratio,120)",
is_quarterly=False, add_data=False)
DAVOL10 G010050A
因子描述:相对10日相对120日平均换手率(Difference between 10-day average turnover rate and 120 -day average turnover rate)。
计算方法:
DA VOL10 = VOL10 - VOL 120
最近一段时间的日平均换手率相对于120个交易日的变化。计算了10个交易日的结果。
DAVOL10 = dv.add_formula('DAVOL10_J', "Ts_Mean(turnover_ratio,10)-Ts_Mean(turnover_ratio,120)",
is_quarterly=False, add_data=False)
DAVOL20 G010051A
因子描述:相对20日相对120日平均换手率(Difference between 20-day average turnover rate and 120 -day average
turnover rate)。
计算方法:
DAVOL20 = VOL20- VOL 120
最近一段时间的日平均换手率相对于120个交易日的变化。计算了20个交易日的结果。
DAVOL20 = dv.add_formula('DAVOL20_J', "Ts_Mean(turnover_ratio,20)-Ts_Mean(turnover_ratio,120)",
is_quarterly=False, add_data=False)
STOM G010052A
因子描述:月度换手率对数
计算方法:
STOM=Log(Ts_Mean(turnover_ratio/100,21)*21)
或者STOM=ln(sum(turnover_ratio/100,21))
使用近一个月的换手率的累加和的对数
STOM = dv.add_formula('STOM_A', "Log(Ts_Mean(turnover_ratio/100,21)*21)",
is_quarterly=False, add_data=False)
STOQ G010053A
因子描述:3个月换手率对数平均
计算方法:
STOQ=ln(sum(exp(STOM),T)/T)
其中,T=3个月,这里每个月按照21个交易日计算。
stoq_j = dv.add_formula("STOQ_J","Log(Ts_Sum(turnover_ratio, 63)/3/100)",
is_quarterly=False, add_data=False)
STOA G010054A
因子描述: 12个月换手率对数平均
计算方法:
STOA=ln(sum(exp(STOM),T)/T)
其中,T=12个月,每个月按照21个交易日计算。
stoa_j = dv.add_formula("STOA_J","Log(Ts_Sum(turnover_ratio, 21*12)/12/100)",
is_quarterly=False, add_data=False)