本人tushare ID: 471220
tushare介绍当你想用python进行金融量化的实践时,你首先会面临的一个问题是如何去获取相关的金融数据,常用的数据有股票、基金、指数等。如果是自己去做数据的收集、清洗、整理等工作,那将是比较庞大且麻烦的事。在这里我想介绍一下tushare这个库,它为我们带来了极大的便利,让我们有更多的时间放在数据分析、写量化策略等工作上。
这里是tushare的官方网站Tushare大数据社区,进入首页,你便可以看到如下图所示的介绍。
如何使用tushare 前期工作
- 首先是安装一下tushare这个库
pip install tushare
安装好后,可以查看所安装的版本。
import tushare print(tushare.__version__)
后期,假如想更新库,也是很简单的,只要
pip install tushare --upgrade
- 注册tushare用户
在这里,我们使用的其实是tushare pro(旧版tushare的升级),要使用tushare pro,需要注册用户,获取token,来进行后续的使用。注册的步骤是简单的,大家进入tushare pro的官网,完成相应的注册流程便可,这里不再多说。
开始使用当我们有了这么一个好用的数据来源时,便可以开始学习它的一些基础用法,以及用获取的数据写一些简单的策略来感受一下量化的魅力。这里,我们以定投策略为例,股票选择中国平安601318.SH。
- 获取接口
import tushare as ts import numpy as np import pandas as pd
ts.set_token('your token')
pro = ts.pro_api()
- 获取与保存数据
#获取中国平安近3年的数据 df = pro.daily(ts_code='601318.SH', start_date='20190101', end_date='20211031') df.head()
#为了方便之后的使用,可以把数据保存为csv文件 df.to_csv('601318SH.csv')
#读取文件,只用到'open','high','low','close' df=pd.read_csv('601318SH.csv',index_col='trade_date', parse_dates=['trade_date'])[['open','high','low','close']]
- 接下来进行一个非常简单的定投策略:从2019年1月1日起,每个月的第一个交易日购买1000股,观察半年后的收益情况
#取每月第一个交易日的数据 df_Mon=df.resample('MS').first()
#半年 money_input=0 #投入的资金 hold=0 #持有的数量 for i in range(0,6): money_input+=df_Mon.iloc[i]['open']*1000 hold+=1000 #在下一个月的首个交易日以开盘价卖出 money_output=df_Mon.iloc[6]['open']*hold earning=money_output-money_input earning_rate=(money_output-money_input)/money_input*100 print('我们投入了%.f元,卖出时为%.f元,收益率为%.2f%%'%(money_input,money_output,earning_rate))
- 如果把起始日期由2019年1月1日改为2021年1月1日,
#半年 money_input=0 #投入的资金 hold=0 #持有的数量 for i in range(24,30): money_input+=df_Mon.iloc[i]['open']*1000 hold+=1000 #在下一个月的首个交易日以开盘价卖出 money_output=df_Mon.iloc[30]['open']*hold earning=money_output-money_input earning_rate=(money_output-money_input)/money_input*100 print('我们投入了%.f元,卖出时为%.f元,收益率为%.2f%%'%(money_input,money_output,earning_rate))
可以看到亏损得非常厉害,定投策略就没那么有效了,需要改进策略或者采用其他的策略,如双均线策略。
我们再补充一下如何简单方便地画k线图,这里还是用之前的程序中的数据。
import mplfinance as fin
fin.plot(df_Mon,type="candle",)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)