300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 利用talib构造股票因子 并利用数据挖掘算法进行因子筛选

利用talib构造股票因子 并利用数据挖掘算法进行因子筛选

时间:2020-02-21 08:38:12

相关推荐

利用talib构造股票因子 并利用数据挖掘算法进行因子筛选

本文主要是利用python的talib包和tushare获取数据进行因子构造,并基于Apriori算法对股票因子进行筛选。

数据来源:Tushare大数据社区Tushare为金融数据分析提供便捷、快速的接口,与投研和量化策略无缝对接https://tushare.pro/register?reg=403436不知道如何编写代码的也可以直接进入数据工具接口生成即可Tushare数据工具,非常方便。

以贵州茅台为例。

首先导入要使用的包:

import mathimport tushare as tsimport pandas as pdimport matplotlibimport matplotlib.pyplot as pltimport numpy as npimport talib

利用tushare获取数据,学生可以免费领取一年的积分使用权限,调取数据非常方便。

使用两个接口获取我们需要的基本数据,开盘价,收盘价,市盈率等等

matplotlib.rcParams['axes.unicode_minus']=Falseplt.rcParams['font.sans-serif']=['SimHei']ts.set_token('af3...')#这里是token码 获取地址 https://tushare.pro/register?reg=403436(需注册)pro = ts.pro_api()df1=pro.daily( ts_code='600519.SH', start_date='0101', end_date='0827',fields='trade_date,open,high,low,close,change,vol,amount')df2=pro.daily_basic(ts_code='600519.SH', start_date='0101', end_date='0827',fields='turnover_rate,pe,pb,ps,dv_ratio')df = df1.join(df2)df=df.sort_index()df.index=pd.to_datetime(df.trade_date,format='%Y-%m-%d')#设置日期索引close = df['close']

接下来详细演示如何构造我们常用的一些因子

#MA 常用移动平均线df['MA1'] =talib.MA(np.array(df.close), timeperiod=5)df['MA2'] =talib.MA(np.array(df.close), timeperiod=10)df['MA3'] =talib.MA(np.array(df.close), timeperiod=20)#MACD 异同移动平均线df['MACD'],df['MACDsignal'],df['MACDhist'] = talib.MACD(np.array(close),fastperiod=6, slowperiod=12, signalperiod=9) #OBV 能量潮指标df['obv'] = talib.OBV(np.array(df.close), np.array(df.vol))#BOLL 布林带df['upper'], df['BOLL'], df['lower'] = talib.BBANDS(df.close,timeperiod=20,# number of non-biased standard deviations from the meannbdevup=2,nbdevdn=2,# Moving average type: simple moving average herematype=0)#RSI 相对强弱指标df["rsi1"] = talib.RSI(df.close, timeperiod=6)df["rsi2"] = talib.RSI(df.close, timeperiod=12)df["rsi3"] = talib.RSI(df.close, timeperiod=24)#WR 威廉指标,感觉6日和10日用的较多df['WR1'] = talib.WILLR(df.high, df.low, df.close, timeperiod=6)df['WR2'] = talib.WILLR(df.high, df.low, df.close, timeperiod=10)#KDJ KDJ指标df['kdj-k'],df['kdj-d'] = talib.STOCH(df.high, df.low, df.close)df['kdj-j'] = df['kdj-k'] * 3 - df['kdj-d'] * 2#BIAS 乖离率df['bias_6'] = (df['close'] - df['close'].rolling(6, min_periods=1).mean())/ df['close'].rolling(6, min_periods=1).mean()*100df['bias_12'] = (df['close'] - df['close'].rolling(12, min_periods=1).mean())/ df['close'].rolling(12, min_periods=1).mean()*100df['bias_24'] = (df['close'] - df['close'].rolling(24, min_periods=1).mean())/ df['close'].rolling(24, min_periods=1).mean()*100df['bias_6'] = round(df['bias_6'], 2)df['bias_12'] = round(df['bias_12'], 2)df['bias_24'] = round(df['bias_24'], 2)#ROC 变动率指标df['ROC']=talib.ROC(df['close'], timeperiod=10)

将指标放在一起,可以得到如下图表

将大于均值的设为1,小于均值的设为0,便于我们发现因子与收盘价之间的关系。

使用Apriori算法进行分析,这里使用的是Clementine软件进行分析。

导入Clementine软件,点击Apriori算法即可。

自行确定规则即可,这里取支持度大于50%,置信度大于80%的指标,即可选出关联较强的因子。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。