量化工具使用介绍——Tushare

Tushare ID:497485
今年年初的时候,我和几位小伙伴一起合作打花旗杯,项目和量化交易有关。不可避免地会使用到一些常规的量化工具(尤其是python的第三方库),虽然决赛还没有开始,我们已经确定进入了二十强。非常感谢一些第三方库包括tushare、jqdatasdk等给予的支持,决定写几篇文章向大家介绍一下(事情有点多,拖到了现在…)

Tushare(官网:Tushare大数据社区)。

Tushare是一个免费、开源的财经数据接口包,拥有丰富的数据内容。目前已经可以通过http、Python、Matlab、R语言方式来获取数据。由于我们的策略由Python实现,这里只介绍与Python有关的内容。用户可以在本地下载第三方库进行调用。

平台采取“积分制”的形式返回数据,部分数据需要达到一定的积分才能获取。(在校学生和高校老师绑定可以获取1500的积分哦,具体操作见:Tushare大数据社区)

数据类型:

Tushare涵盖了大量的财经数据,下面简单介绍一下:

在股票方面,提供了沪深股票的股票基本列表,上市公司信息、交易日历等,行情方面提供日线行情、中高频分钟行情、tick级行情,复权因子等,财务方面提供利润表、资产负债表、现金流量表等数据。除了股票数据,tushare还提供指数、公募基金、期货、现货、期权、债券、外汇、港股、美股等数据,可以满足大多数量化交易员所需要的数据要求。

具体使用方法:

tushare的使用方法也非常简单。(正好前段时间anaconda崩了,重装了下,正好可以演示下)

以jupyter notebook为例,直接使用pip install tushare 的命令即可以安装tushare库,进行后续的数据获取。

安装tushare

在这里插入图片描述

登录tushare

我们需要借助token码才能登录,这个需要去官网注册
在这里插入图片描述

利用接口获取数据,这里选取了南京新百的股票:

在这里插入图片描述

下面介绍一个非常简单的双均线策略(这块基本上其实和tushare没有多少关系,用例子简单说明下怎么做策略)

我们首先需要引入其他两个库pandas和numpy,这也是数据分析的实用工具了:

在这里插入图片描述

data是数据框类型,利用pandas库对数据进行预处理:

在这里插入图片描述

第一行是根据交易日期进行从小到大的排序,第二行是将trade_data转换为时间序列,第三行是重置index。我们发现最开始的数据是没有数据的,这时股票没有上市,需要把这些行去除掉:

在这里插入图片描述

计算5日均值和20日均值,并添加到dataframe中:

在这里插入图片描述

设置cash和持股数量:

在这里插入图片描述
在这里插入图片描述

接下来根据五日均值和二十日均值的大小关系进行买入/卖出操作:

在这里插入图片描述

得到持仓信息:

在这里插入图片描述

计算equity和baseline:
在这里插入图片描述

计算收益率并进行绘图:
在这里插入图片描述

在这里插入图片描述

在参数随意选取5和20的情况下策略的表现并不是太好。在现实中一般会通过网格搜索找到最佳的参数,这里不详细介绍了。这只是一个较为简略的策略,实际上还要考虑涨停不能买、跌停不能卖、交易手续费、滑点等等问题,策略的收益率还会更低一些。

个人拙见,均线策略还是蛮玄学的。通过找到某个参数当然可以拟合出最佳策略,但是参数很难有量化的意义,未来这些参数能否继续历史的表现也是未知的。还是因子选股等方法靠谱些。

源代码如下:

在这里插入代码片
##########################双均线策略##################################import tushare as ts
import pandas as pd
import numpy as np
ts.set_token('#####')//这里请填写自己的token码
pro = ts.pro_api()data = ts.pro_bar(ts_code='600682.SH', adj='qfq', end_date='20220101')
data.sort_values(by="trade_date", inplace=True)
data["trade_date"] = pd.to_datetime(data["trade_date"])
data.reset_index(inplace=True, drop=True)data["ma5"] = data["close"].rolling(5).mean().fillna(method="bfill")
data["ma20"] = data["close"].rolling(20).mean().fillna(method="bfill")CASH = 1000000
STOCKHOLD = 0data.loc[0, "cash"] = CASH
data.loc[0, "stock_hold"] = STOCKHOLDdata.loc[1, "cash"] = CASH
data.loc[1, "stock_hold"] = STOCKHOLDfor i in range(1, len(data) - 1):if data.loc[i, "ma5"] > data.loc[i, "ma20"] and data.loc[i - 1, "ma5"] < data.loc[i - 1, "ma20"] and data.loc[i, "stock_hold"] == 0:data.loc[i + 1, "stock_hold"] = data.loc[i, "cash"] // (100 * data.loc[i + 1, "open"]) * 100data.loc[i + 1, "cash"] = data.loc[i, "cash"] - data.loc[i + 1, "stock_hold"] * data.loc[i + 1, "open"]continueif data.loc[i, "ma5"] < data.loc[i, "ma20"] and data.loc[i - 1, "ma5"] > data.loc[i - 1, "ma20"] and data.loc[i, "stock_hold"] > 0:data.loc[i + 1, "stock_hold"] = 0data.loc[i + 1, "cash"] = data.loc[i, "cash"] + data.loc[i, "stock_hold"] * data.loc[i + 1, "open"]continuedata.loc[i + 1, "stock_hold"] = data.loc[i, "stock_hold"]data.loc[i + 1, "cash"] = data.loc[i, "cash"]data["equity"] = data["stock_hold"] * data["close"] + data["cash"]
data["equity_baseline"] = data["close"] / data.iloc[0]["close"] * CASH
data["MAXDDRATE"] = (data["equity"] - data["equity"].expanding().max()) / data["equity"].expanding().max()import matplotlib.pyplot as plt
fig = plt.figure()
# Equity
ax = fig.add_subplot(111)
ax.plot(data["trade_date"], data["equity"], c="r", label="my")
ax.plot(data["trade_date"], data["equity_baseline"], c="g", label="market")
# MaxDrawDown
ax2 = ax.twinx()
ax2.fill_between(data["trade_date"], data["MAXDDRATE"], facecolor="b", interpolate=True, alpha=.25)
ax.legend(loc=4)
ax.set_xlabel("DATE")
ax.set_ylabel("EQUITY")
ax2.set_ylabel("MAXDDRATE")
# calculate the return rate per year
delta_days = (data["trade_date"].iloc[-1] - data["trade_date"].iloc[0]).days
return_rate_per_year = (data["equity"].iloc[-1] / data["equity"].iloc[0]) ** (252 / delta_days) - 1
return_rate_per_year_pct = round(return_rate_per_year * 100, 2)
ax3 = fig.add_subplot(122)
ax3.axis("off")
print("Return per year is " + str(return_rate_per_year_pct) + "%.")
# calculate the sharpe ratio
return_sr = data["equity"] / data["equity"].shift(1) - 1
RF = 0.05
mean_ = np.mean(return_sr) * 252
sigma_ = np.std(return_sr) * np.sqrt(252)
sharpe = (mean_ - RF) / sigma_
print("Sharpe ratio is " + str(round(sharpe, 2)) + ".")
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20103.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BigQuant策略做量化真的能赚钱吗?

BigQuant策略做量化可以赚钱&#xff0c;但是是建立在一些前提条件基础之上的。量化策略本身存在的意义就是通过数量化模型建立科学投资体系&#xff0c;获取稳定收益&#xff0c;相比传统投资&#xff0c;其具备纪律性、系统性、及时性、准确性等诸多优势&#xff0c;所以一个…

自己做量化交易软件(45)小白量化实战18--直接使用通达信自编指标公式进行分析绘图和回测

自己做量化交易软件(45)小白量化实战18–直接使用通达信自编指标公式进行分析绘图和回测 小白量化一代提供了Python公式算法模式来写量化程序。 小白量化二代提供了仿通达信公式的模式来写量化程序。 小白量化三代除了仿通达信公式的模式来写量化程序外&#xff08;见前几篇博客…

自己做量化交易软件(16)用小白通通量化AI框架打造自己的量化平台

最近一段时间&#xff0c;我主要学习python3和tkinter的窗口开发&#xff0c;对tkinter编程逐步了解。 此外&#xff0c;应广大朋友要求&#xff0c;我写了 一本学习python3学习书籍<小白学Python3实战搭建量化投资平台>. <小白学Python3实战搭建量化投资平台>内容…

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型&#xff0c;它基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT是一种基于深度学习的…

从GPT到chatGPT(一):GPT1

GPT1 文章目录 GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务 实验训练细节实验结果 分析预训练层参数转移的影响zero-shot的表现消融实验 总结 前言 GPT1&#xff0c;出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#…

ChatGPT+MindShow快速制作ppt

一、ChatGPT&MindShow简介 1、什么是ChatGPT? ChatGPT是一种基于自然语言处理和深度学习技术的人工智能语言模型&#xff0c;使得人们可以更加方便地与计算机进行交互&#xff0c;如智能问答等。 2、什么是MindShow? MindShow只需要在网页上登录即可&#xff0c;可以…

玩转ChatGPT:回答审稿人问题

一、写在前面 前段时间一篇时间序列预测的文章返修&#xff0c;还挺幸运的&#xff0c;给了个小修。 不过问题也问得有点刁钻&#xff0c;应该是个行家。 想到手头有小Chat&#xff0c;打算使用TA来辅助我回答审稿人问题。 以下展示仅仅提供一个工作流和思路&#xff0c;具体…

Jina AI 创始人肖涵博士:揭秘 Auto-GPT 喧嚣背后的残酷真相

Auto-GPT 究竟是一个开创性的项目&#xff0c;还是一个被过度炒作的 AI 实验&#xff1f;本文为我们揭开了喧嚣背后的真相&#xff0c;并揭示了 Auto-GPT 不适合实际应用的生产局限性。 背景介绍 这两天&#xff0c;Auto-GPT&#xff0c;一款让最强语言模型 GPT-4 能够自主完成…

两款吾爱破解优秀软件,批量查找文本,图像视频画质增强

批量查找文本 By&#xff1a;tuao 我们在电脑中查找文件的方式有很多&#xff0c;只要知道文件名便能很容易找到 但如果只记得文档中的某个关键词&#xff0c;而忘记文件名称的话&#xff0c;找起来就有些费劲了 这款工具便可以批量的在word、wps、excel、pdf和txt中查找文本…

吾爱破解论坛2021年11月11日,光棍节免费开放注册

点击上方蓝字"优派编程"选择“加为星标”&#xff0c;第一时间关注原创干货 官方原话&#xff1a; 吾爱破解论坛从2008年3月13日建立以来&#xff0c;陪伴众多坛友走过了12年艰辛而辉煌的风雨历程&#xff0c;以带领新手走入密界大门为基础&#xff0c;汇集了一大批爱…

吾爱出品,必属精品

前言 吾爱破解论坛是一个非常老牌的软件技术交流地&#xff0c;虽然经过多次整改&#xff0c;人气不如从前了 但也依旧能找到很多好玩好用的东西&#xff0c;小编不少分享的软件都是在这个论坛找到的 今天又收集了4款吾爱上高评霸榜的小工具&#xff0c;都很实用&#xff01…

txt工具吾爱版

每次在网上复制的文本内容都是乱七八糟的&#xff1f;那么可以配合txt工具来处理&#xff0c;这是由吾爱破解pgzzh用户出品的一款非常实用、绿色小巧的电脑排版工具&#xff0c;不要看该软件大小才几百KB&#xff0c;其功能是非常好用的&#xff0c;主要就是为用户们提供了去除…

吾爱studio3T

根本逻辑讲解&#xff1a;通过注册表更改studio3T试用时间到期的两种方 法 本例逻辑为通过不断重置studio 3t的试用时间达成伪永久&#xff0c;此软件少有永久免费版&#xff0c;如有永久的请在评论区我。 第一种方法 第一步&#xff1a;winr输入 regedit打开注册表 第二步&…

吾爱第二课-去除网页弹窗

目录 WindowsAPI实例1实例2修改主页内置广告1 用到的工具RestoratorFix ResourceProcexpProcmon WindowsAPI API函数提供应用程序所需要的窗口管理、图形设备接口、内存管理等服务功能。这些功能以函数库的形式组织在一起&#xff0c;形成了Windows应用程序编程接口。 A代表A…

python安卓吾爱_申请会员ID:吾爱Python

1、申请ID&#xff1a;吾爱Python 2、个人邮箱&#xff1a;792800132qq.com 3、原创技术文章&#xff1a;通过Python来实现网页的自动登录。 原创内容介绍&#xff1a;通过Python中的selenium库实现网页的自动登录&#xff08;以今日头条为例&#xff09; 第一步&#xff1…

HTML和xml有哪些区别?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言HTML和XML的概述HT…

从零开始的Python编程指南:掌握基础语法与实用技巧

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言Python简介准备工作…