
量化交易
文章平均质量分 94
最老程序员闫涛
关注全文检索、数据挖掘、推荐引擎技术,Android开发技术,互联网及移动互联网创业。
展开
-
期权定价Python实现
期权定价实践期权定价公式迭代法期权定价公式期权定价通常使用BSM公式,如下所示:C(St,K,t,T,r,σ)=StN(d1)−e−r(T−t)KN(d2)C(S_{t}, K, t, T, r, \sigma)=S_{t} N(d_{1})-e^{-r(T-t)}KN(d_{2})C(St,K,t,T,r,σ)=StN(d1)−e−r(T−t)KN(d2)其中N(d)N(d)N(d)为标准正态分布x∼N(0,1)x \sim N(0,1)x∼N(0,1)时x<dx<dx&l原创 2021-05-12 09:42:41 · 5161 阅读 · 4 评论 -
基于强化学习的期权量化交易回测系统5
我们现在已经可以在主循环中获取行情数据,并且传给了Agent类。接下来Agent类会调用策略类,由于决定采取的行动。在策略类做决策时,需要参考用户仓位Position信息,还有就是权利金、保证金、手续费等计算,在本篇博文中将对这些内容进行介绍。交易费用计算在进行期权交易时,多头买入认购和认沽期权时,需要向卖出方支付权利金,而为了保证卖方可以履约,要向卖方收取保证金。同时,券商还会收取手续费和税费,手续费和税费可能单边收取也可能双边收取,情况比较复杂。因此我们采用Commission类来进行管理。我们首原创 2020-08-28 15:09:04 · 2079 阅读 · 2 评论 -
基于强化学习的期权量化交易回测系统4
获取50ETF指数行情数据50ETF期权的标的物是50ETF指数,我们可以使用akshare来获取该指数的日行情数据,如下所示:class Sh50etfIndexDataSource(object): ...... def get_daily_data(self, start_date, end_date): df = ak.stock_zh_index_daily(symbol="sh510050") df1 = df.loc[start_date: end原创 2020-08-26 11:44:11 · 854 阅读 · 0 评论 -
基于强化学习的期权量化交易回测系统3
在本篇博文中,我们将获取50EFT期权的日行情数据和50ETF的日行情数据,作为环境的状态数据,可以在强化学习环境SopEnv中逐日显示出来。数据集对象定义我们定义50ETF日行情数据集类D50etfDataset,在其中统一管理50ETF行情和50ETF期权行情数据以及Greeks信息、VIX恐慌指数等信息。D50etfDataset是PyTorch中Dataset的子类,该类中有两个我们必须提供实现代码的方法,分别为__len__获取数据集中样本数量,__getitem__获取指定索引的样本数据,大原创 2020-08-25 15:24:40 · 2011 阅读 · 3 评论 -
基于强化学习的期权量化交易回测系统2
在本篇博文中,我们将介绍强化学习环境类SopEnv的具体实现。SopEnv类的基类为gym.Env类,这样做的目的是为了与当前主流的强化学习系统兼容,我们需要重写该类的四个方法:reset:重置系统为初始状态;_next_observation:获取并返回环境状态;_take_action:执行Agent所选择的行动;step:最重要的方法,在该方法中执行如下操作:执行Agent选择的行动;获取当前状态;生成当前奖励信号;除了上述方法之外,该类还有一个重要的方法startup,在原创 2020-08-20 18:05:40 · 953 阅读 · 0 评论 -
基于强化学习的期权量化交易回测系统1
概述量化交易平台很重要的一个环节就是回测系统,可以通过对历史行情的回放,验证量化交易策略的性能表现。量化交易强化学习环境,则是向Agent提供一个交互的环境,Agent(即量化策略)根据市场环境(强化学习环境)的状态,选择最合适的操作,强化学习环境会根据操作结果,反馈给Agent,供Agent改进其策略网络。通常这两者是单独的系统,我们用强化学习环境来训练Agent即量化交易策略,然后再回测系统中验证策略的性能表现。但是这样做一个明显的缺点就是历史行情和交易过程的模拟需要做两份,所以将二者融合起来,具有很原创 2020-08-20 16:58:19 · 1888 阅读 · 0 评论 -
期权基础知识
期权允许做非常复杂的策略,有策略之王的称号。同时我国已经引入期权交易5、6年之久,其中的50ETF期权交易非常活跃。由于期权可以在任意市场上环境下操作,具有高杠杆比的特点,是量化交易领域非常重要的一块。然而要进行期权的量化交易,我们必须先搞清期权的基本概念。下面我们就以50ETF为例,向大家介绍期权的基本概念。认购(看涨)期权认购期权也称为看涨期权,如果认为50ETF会大涨,则可以考虑买入认购期权。初始状态我们假设张三持有12月到期的50ETF认购期权:期权类型:认购期权;行权价格:2.40原创 2020-08-18 20:28:32 · 1659 阅读 · 0 评论 -
利用akshare读取50EFF期权2
我们接下来将研究获取期权历史行情数据的方法。获取当天分钟级数据我们可以获取指定合约编号,当天的分钟级数据: def demo(self): option_sina_sse_minute_df = ak.option_sina_sse_minute(code="10002513") ticks = option_sina_sse_minute_df['时间'] prices = option_sina_sse_minute_df['价格']原创 2020-08-18 17:10:14 · 942 阅读 · 0 评论 -
利用akshare读取50EFF期权1
目前国内期权市场比较活跃的期权产品,当属上证的50ETF期权,下面我们将通过akshare库,来获取50ETF期权数据。获取合约到期月份列表 def demo(self): # 获取合约到期月份列表 option_sina_sse_list_df = ak.option_sina_sse_list( symbol="50ETF", exchange="null") print(option_sina_sse_l原创 2020-08-17 16:56:56 · 2424 阅读 · 0 评论 -
易经量化交易系统之回测系统2
订单类当回测系统运行时,我们所开发的策略,会根据市场行情数据,生成相应的买入、卖出操作,这时就会产生订单。订单包括时间戳、交易标的代码、买卖操作、数量、价格、头寸等信息,产生订单后,会将订单提交给broker来进行处理,会进一步添加执行时间、交易价格、交易数量信息。我们这里先只处理市场价订单,其他类型订单,如限制、终止订单等,可以在这个基本系统上进行扩展。class Order(object): # 订单类型定义 OT_MARKET_ORDER = 1001 # 市价类型订单 #原创 2020-08-11 22:00:21 · 882 阅读 · 0 评论 -
易经量化交易系统之回测系统1
我们在这里向大家介绍如何从零开始,实现一个适合于A股市场的回测系统。在这里我们以A股日K线数据为例,实际上可以比较方便的扩展为分级的数据源。Tick数据类我们首先定义一个Tick数据的基类,这个类维护所有金融市场标的的Tick数据具有共性的内容:class TickData(object): def __init__(self, symbol, timestamp): ''' symbol 股票代码 timestamp 时间点 '原创 2020-08-11 11:49:02 · 992 阅读 · 0 评论 -
易经量化交易系统2
在本篇博文中,我们要向回测系统中加入佣金、印花税、过户费等交易成本项目,使我们的回测系统更加真实。根据当前A股市场税费的规定,主要有以下三项:佣金:交易额的0.3%,起征点5元,双向收取;过户费:交易额的0.02%,双向收取;印花税:交易额的0.1%,卖出方收取;在原始的BackTrader中,只允许收取固定比例佣金,所以我们需要扩展其功能。我们首先扩展CommInfoBase类:# A股手续类,主要包括三项:# 1. 佣金:交易额的0.3%,起征点5元,双向收取;# 2. 过户费:交易原创 2020-08-04 18:29:30 · 653 阅读 · 0 评论 -
易经量化交易系统1
易经量化交易系统是一个完整的量化交易平台,提供基于深度元强化学习的交易策略,并且具有一整套回测平台,可以用于策略研发和实盘操作。量化交易平台中,回测系统是一个关键的功能,易经量化交易系统的回测系统是基于BackTrader的回测系统,为量化交易研发中的性能评估,提供了一个易用回测系统,做量化交易研发,首先需要选择一个好的回测系统,所以我们先来向大家介绍这个回测系统。环境配置首先下载易经量化系统源码:git clone https://github.com/yt7589/iching.git在易经原创 2020-08-04 15:45:21 · 1272 阅读 · 0 评论 -
时间序列预测的Meta N-BEATS方法1
在时间序列预测中,目前占统治地位的方法仍然是传统的时间序列分析统计方法,虽然有个别方法中融入了深度学习模型,也基本上仅限于利用深度学习来学习这些时间序列统计模型的超参数。Bengio团队最新的Paper,将纯深度学习技术应用于时间序列预测,并在测试数据集上取得了比传统时间充列分析还要好的效果,他们分别发表了两篇文章,第一篇发表于19年5月,讲述了N-BEATS算法,第二篇发表于20年2月,将N-BEATS算法与元学习方法相融合,并且取得了SOTA效果。本系列博文除了介绍这两篇文章基本概念之外,还会讲解采用原创 2020-07-29 12:26:32 · 4340 阅读 · 2 评论 -
深度学习量化交易---0.1.股票K线图绘制
研究股票交易的基本功就是看K线图,所以在这一节里面,我们的任务就是拿到一支股票的历史数据,我们用python画出其K线图,这是进行下一步技术分析的基础。我们以上证综指为例,之所以没拿某支股票为例,是因为股票容易被操控,而上证综指很难被操控,因为规律性会更强一些。...原创 2018-11-25 12:54:57 · 5365 阅读 · 5 评论 -
深度学习量化交易---0.2.基于长短时记忆网络预测股票价格1
在这一节中,我们将先向大家介绍长短时记忆网络(LSTM),然后详细讲解怎样使用长短时记忆网络(LSTM)来预测股票价格,为了避免人为因素干拢,我们还以上证综指为例来进行说明。长短时记忆网络(LSTM)股票交易数据是一种典型的时序信号,需要处理较长的时间序列,有时为了准确的进行股票价格预测,可能会需要看几周甚至几个月的历史数据,如果采用普通的多层感知器模型的话,那么要求输入层维度就非常大,整个网...原创 2018-11-27 14:59:41 · 1659 阅读 · 0 评论 -
深度学习量化交易---0.2.基于长短时记忆网络预测股票价格2
在上一篇博文中,我们介绍了长短时记忆网络的基本概念,在这一节中,我们将以长短时记忆网络(LSTM)为例,讲解深度学习算法在股票价预测中的应用。我们要分析的数据如下所示:各列依次为:股票代码、日期、开盘价、收盘价、最低、最高、交易量、金额、涨跌幅、第二天的最高价。我们首先读入训练样本集,代码如下所示:import numpy as npimport pandas as pdimport...原创 2018-11-28 10:58:06 · 2500 阅读 · 2 评论 -
python量化交易笔记---10.numpy库使用
numpy是python中一个重要的科学计算库,是当前机器学习和深度学习的基础库之一。在numpy中最重要的就是多维数组,我们在这里重点向大家介绍一下多维数组的用法。创建多维数组range函数直接创建采用range函数,创建下标由零开始的一维数组(其后可以通过reshape变为多维数组),数组元素值为由零开始的整数:import numpy as np# 定义数组并显示其内容、形状、类...原创 2019-02-08 17:48:10 · 1067 阅读 · 0 评论 -
python量化交易笔记---13.描述性统计
统计分为描述统计和推断统计,我们在这一章里,主要讲解描述性统计。我们用到的数据如下所示:images/c13f004.png上图中,gsyh代表工商银行收益率,pfyh代表浦发银行收益率,zglt代表中国联通收益率,我们仅以工商银行收益为例计算各个统计量。1.频数分布我们以2014年工商银行股票的收益率为例,来看频数分布。我们将收益率(下图中ysgh列)按0.025为一段,统计收益率...原创 2019-02-09 13:52:10 · 1552 阅读 · 0 评论 -
python量化交易笔记---14.随机变量
随机变量用大写字母来表示,如XXX,其具体的观测值用小写字母来表示,如xxx。我们希望通过观测到的结果,来推断出随机变量的真实分布。根据随机变量的取值,分为离散随机变量和连续随机变量,在量化交易中,绝大多数数据都是连续随机变量。1.概率与概率分布1.1.离散型随机变量假设离散型随机变量XXX,其所有取值的集合为{ak},k=1,2,3,...\{a_k\}, k=1,2,3,...{ak}...原创 2019-02-09 19:48:17 · 973 阅读 · 0 评论 -
Python量化交易笔记---16.方差分析
方差分析是一种多变量之间关系的定性分析方法,通过研究多个变量之间存在的关系,我们可以提高预测的准确性。1.概述在股票研究中,我们经常按行业版块来进行研究,假设不同行业间收益率为相互独立的,我们想要知道化工行业与金融行业相比,收益率是高还是低。在这个问题中,行业版块我们称之为因子(Factor)变量,因子变量可以取实数值,也可以取如行业类型这样离散状态值,我们称之为水平;我们研究的收益率称之为反...原创 2019-02-11 11:20:44 · 1376 阅读 · 3 评论 -
深度学习量化交易实践---7.1.时序信号特点
时序信号我们以上证综指收盘指数为例,其就是一个典型的时序信号。上证综指文件中,每天作为一行,表示该日的指数信息,各列信息如下所示:Indexcd:指数代码,000001表示上证综合指数;trddt:交易日期,格式为yyyy-MM-dd;daywk:星期日期,0星期日,1星期一,…,6星期六opnindex:开盘指数hiindex:最高价loindex:最低价clsindex:收盘价...原创 2018-11-22 17:47:58 · 2298 阅读 · 0 评论