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

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

数据来源:Tushare大数据社区Tushare为金融数据分析提供便捷、快速的接口,与投研和量化策略无缝对接利用talib构造股票因子,并利用数据挖掘算法进行因子筛选https://tushare.pro/register?reg=403436 ;不知道如何编写代码的也可以直接进入数据工具接口生成即可Tushare数据工具,非常方便。

以贵州茅台为例。

首先导入要使用的包:

import math
import tushare as ts
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import talib

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

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

matplotlib.rcParams['axes.unicode_minus']=False
plt.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='20200101', end_date='20210827',fields='trade_date,open,high,low,close,change,vol,amount')
df2=pro.daily_basic(ts_code='600519.SH', start_date='20200101', end_date='20210827',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 mean
                nbdevup=2,
                nbdevdn=2,
                # Moving average type: simple moving average here
                matype=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()*100
df['bias_12'] = (df['close'] - df['close'].rolling(12, min_periods=1).mean())/ df['close'].rolling(12, min_periods=1).mean()*100
df['bias_24'] = (df['close'] - df['close'].rolling(24, min_periods=1).mean())/ df['close'].rolling(24, min_periods=1).mean()*100
df['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)

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

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

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

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

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

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

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

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

Original: https://blog.csdn.net/wlbx00/article/details/120357551
Author: lili梨花
Title: 利用talib构造股票因子,并利用数据挖掘算法进行因子筛选

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/769480/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球