【量化干货】用python搭建量化交易策略

前言

技术已成为金融行业中的战略资产。而传统的金融机构现在正在转型成为科技公司,而不仅仅是专注于该领域的金融方面。(文末送读者福利)

数学算法带来了创新和速度,它们可以帮助我们在市场上获得竞争优势。金融交易的速度和频率以及庞大的数据量,已引起所有大型金融机构对技术的广泛关注。算法交易或定量交易是基于数学和统计分析设计和开发交易策略的过程。这是一个极其复杂的金融领域。

本教程是使用Python进行定量交易的初学者指南,如果读者是以下行业人士,将会发现这篇文章非常有帮助:

  1. 旨在成为基金或银行量化分析师

  2. 计划开始自己的自营量化交易的人。我们将在这篇文章中介绍以下主题:1. 股票和交易基础

  3. 从Quandl API提取数据

  4. 股票价格数据的探索性数据分析

  5. 移动平均线

  6. 用Python制定交易策略

  7. 可视化策略的表现

股票交易及交易策略买卖现有和先前发行的股票的过程称为股票交易。有一个可以买卖股票的价格,并且这个价格根据股票市场的需求和供应不断波动。这将视公司的业绩和行为而定,股价可能会上下波动,但股价的波动不仅限于公司的业绩。交易者支付钱来换取公司的所有权,希望进行一些有利可图的交易并以更高的价格出售股票。交易者遵循的另一项重要技术是卖空股票。这涉及“借入股票并立即出售它们,以期以后以较低的价格购买它们,将其退还给贷方,并赚取相关的市场保证金。因此,大多数交易者遵循特定的量化策略和模型进行交易。而这被称为交易策略。

对冲基金和投资银行的量化交易者设计并开发了这些交易策略和框架来进行测试。它需要深厚的编程专业知识,并且需要了解构建自己的策略所需的语言。

在C ++,Java,R和MATLAB等语言中,Python是最流行的编程语言之一。由于其易于使用的语法,庞大的社区和第三方支持,它已在所有领域广泛采用,尤其是在数据科学领域。为了充分利用本教程,我们需要熟悉Python和统计信息。

从Quandl API提取数据

为了提取股票价格数据,我们将使用Quandl API。但在此之前,让我们设置工作环境:

在终端中,为项目创建一个新目录(根据需要命名):

mkdir <目录名称>
确保在计算机上安装了Python 3和virtualenv。
使用virtualenv <env_name>创建一个新的Python3 virtualenv,并使用源<env_name> / bin / activate激活它。
现在,使用pip安装jupyter-notebook,然后在终端中输入pip install jupyter-notebook。
同样,安装pandas,quandl和numpy软件包。

从终端运行您的jupyter-notebook。
现在,笔记本应该可以在本地主机上运行,如以下屏幕截图所示:

在这里插入图片描述
您可以通过单击右侧的“新建”下拉列表来创建您的第一个笔记本。确保您已在Quandl上创建了一个帐户。请按照此处提到的步骤创建您的API密钥。一切准备就绪后,让我们直接进入:#导入所需的软件包将熊猫(PANDAS)作为pd导入将quandl导入为q熊猫将成为本教程中使用最严格的软件包,因为我们将进行大量的数据处理和绘图。导入软件包后,我们将使用Quandl软件包向Quandl API发出请求:#设置API密钥q.ApiConfig.api_key =“ <API密钥>”#发送获取请求以查询Microsoft从2010年1月1日至2019年1月1日的当日股票价格msft_data = q.get(“ EOD / MSFT”,start_date =“ 2010-01-01”,end_date =“ 2019-01-01”)#查看数据帧的前5行msft_data.head()(文末送读者福利)

在这里插入图片描述
这里有微软过去9年的EOD股票定价数据,我们所要做的就是从Quandl包中调用get方法,并提供股票代号,MSFT和所需数据的时间范围。

这真的很简单,对吧?让我们继续前进,以进一步了解和探索这些数据。股票定价数据的探索性数据分析。而掌握了数据之后,我们要做的第一件事就是了解数据代表什么以及封装什么样的信息。打印DataFrame的信息,我们可以看到其中包含的所有内容:
在这里插入图片描述

如上面的屏幕快照所示,DataFrame包含DatetimeIndex,这意味着我们正在处理时间序列数据。

索引可以被视为帮助我们修改或引用数据的数据结构。时间序列数据是在连续的,等间隔的时间间隔拍摄的价格快照的序列。在交易中,EOD股票价格数据捕获指定时间段内有关股票的某些参数(例如股票价格)的运动,并定期记录数据点。重要术语查看其他列,让我们尝试了解每个列所代表的含义:开盘/收盘—捕获股票的开盘价/收盘价Adj_Open / Adj_Close-调整后的开盘/收盘价是指股票在任何给定交易日的价格,该价格已被修改为包括在第二天开盘前任何时间发生的任何股息分配,股票拆分和其他公司行为。交易量—它记录在任何给定交易日交易的股票数量。
高/低-跟踪特定交易日中股票的最高和最低价格。这些是我们此时将重点关注的重要列。我们可以了解数据的摘要统计信息,该统计信息显示了行数,均值,最大值,标准差等。尝试在Ipython单元格中运行以下代码行:

msft_data.describe()

resample()

熊猫的resample()方法用于简化时间序列数据的频率转换的控制和灵活性。我们可以指定时间间隔以将数据重新采样到每月,每季度或每年,并对其执行所需的操作。

msft_data.resample('M').mean()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值