分类
交易平台

量化投资技术分析实战

注意:data.current(context.asset, ‘price’) 等同于 price_history[-1].

何海群,拥有20年AI人工智能从业经验。zwPython.com研习社、TOP极宽量化开源项目发起人,“中华大字库”软件发明者,图书作品有《零起点Python大数据与量化交易》《零起点Python机器学习快速入门》《零起点TensorFlow与量化交易》等。
何星语,网名是Y•Star,拥有统计学和英语双学士学位,TOP极宽量化开源组核心成员,发表论文《区块链中的数学逻辑及应用》《基于区块链技术的商务积分应用研究》,以及英文论文 A Brief Analysis of Maugham’s View of Life in The Razor’s Edge (浅析毛姆小说《刀锋》中的人生观)。

AI交易逐渐成为全球投资市场的主流,趋势已经形成。十几年前,在美国投资市场中,程序化交易的占比已经达到80%。程序化交易的核心是交易员在市场中进行上万次的观察和交易而寻找到的逻辑因子,通过人工智能模型,计算各种逻辑因子的获利概率。因为每个逻辑因子的生命周期都很短,通常只有几个月,所以需要交易员不停地跟随变化的市场寻找适合当下的程序化的逻辑。目前,AI交易时代已经到来,这可以使交易员的工作更精准细致,杜绝人性主观的一面,同时减少程序化交易被“钓鱼”的风险。
我和何海群因为程序化交易相识并成为朋友,一直敬佩海群在程序化交易中十几年如一日的坚持,他一直走在AI交易最前沿,且成绩斐然。AI交易在国内刚刚起步,发展空间巨大,海群愿意做中国AI交易的基石,通过本书分享自己多年的研究成果,为广大程序化交易爱好者提供一条便捷的成功之路。
在AI交易方面,BackTrader简单易学、优势明显,已成为交易系统方面的佼佼者,为国内投资者提供了更顺畅的AI交易赛道。BackTrader使用Python编写策略,其特点是简单、快速、便捷,在投资研究方面可满足机构的需求,让专业投资者能更好地专注于策略和交易本身。国内的AI交易犹如一片蓝海,等着各位读者朋友去开发。
紧跟市场趋势才是成功之道,感谢海群为中国人工智能和金融科技融合做出的贡献!

第1章 BackTrader简介 1
1.1 BackTrader量化软件的特点 2
1.2 进入神奇的Python世界 3
1.3 TOP极宽量化工具函数库 4
1.4 量化回测“四步曲” 5
1.5 案例:完整的量化版“Hello”程序 7
第2章 数据预处理 11
2.1 数据格式 12
2.2 Lines内部数据格式 14
2.3 数据目录 17
2.4 指数代码文件 18
2.5 数据预处理函数 18
2.6 案例:数据预处理 20
第3章 策略编程 量化投资技术分析实战 25
3.1 SQN指数&策略评估参数 26
3.2 量化金融指标 27
3.3 交易数据更新 29
3.4 策略编程模板 30
3.5 案例:策略编程 33

第4章 Buy买入策略 39
4.1 Buy买入函数 40
4.2 案例:设置Buy买入价格 40
4.3 next策略执行函数 45
4.4 Buy买入策略编程 46
第5章 Sell卖出策略 49
5.1 Position仓位检查 50
5.2 Smart Staking智能动态仓位管理 52
5.3 Sell卖出函数 54
5.4 案例:Sell卖出策略 55
5.5 买卖点图表 57
5.6 notify_order订单状态检查函数 57
5.7 双边交易策略 59
5.8 bar量化节点数据包变量 61
第6章 Broker数字经纪人 64
6.1 Broker数字经纪人概述 65
6.2 交易佣金(Commission) 67
6.3 案例:添加Broker经纪人 68
6.4 Broker常用参数 72
6.5 案例:Sizer交易数额 74
6.6 Sizer交易数额模块库架构图 77
第7章 MA均线策略编程 79
7.1 MA均线策略和指标简介 80
7.2 案例:MA均线策略编程 81
第8章 plot绘制金融图 87
8.1 金融分析曲线 88
8.2 案例:绘制不同风格K线图 88
8.3 多曲线金融指标 93
8.4 Observers观测子模块 95
8.5 plot绘图函数的常用参数 96
8.6 案例:买卖点符号和色彩风格 98
8.7 案例:vol成交量参数 105
8.8 案例:多图拼接模式 110
8.9 案例:绘制HA平均K线图 114
8.10 K线图绘制 量化投资技术分析实战 120
8.11 案例:绘制多指标金融图 122
第9章 回测结果分析 127
9.1 常用量化分析指标 128 量化投资技术分析实战
9.2 案例:回测数据基本分析 131
9.3 Analyzer分析类 137
9.4 Analyzer分析模块架构图 138
9.5 SQN指数 142
9.6 案例:回测数据扩展指标分析 144
9.7 案例:底层数据分析 151
第10章 PyFolio专业量化分析图 158
10.1 常用量化模块库 159
10.2 轻量级量化分析模块 159
10.3 PyFolio简介 160
10.4 案例:PyFolio量化分析 164
10.5 解读专业量化分析图 173
第11章 Trade交易操作 175
11.1 量化回测分析流程 176
11.2 Cerebro类模块 177
11.3 案例:Trade交易 178
11.4 实盘交易及其隐性规则 185
11.5 Stake交易数额和Trade交易执行价格 188

第12章 买卖点分析 192
12.1 案例:买卖点设置 193
12.2 优化输出信息 197
12.3 案例:手动版策略参数优化 201
第13章 sign信号交易模式 208
13.1 Indicator指标模块库架构图 209
13.2 案例:信号交易的基本操作 213
13.3 案例:信号模式买卖点分析 218
13.4 SignalStrategy信号策略类 222
第14章 参数寻优 227
14.1 参数寻优概述 228
14.2 演示案例:单参数自动寻优 228
14.3 BackTrader内置优化函数 232
14.4 演示案例:多参数自动寻优 234
第15章 模拟盘/实盘操作 238
15.1 模拟盘交易和实盘交易的区别 239
15.2 实盘数据和交易接口 239
15.3 数据共性 241
15.4 数据区别 243
15.5 案例:模拟盘的参数设置 244

实战:基于技术分析的Python算法交易

注意:data.current(context.asset, ‘price’) 等同于 量化投资技术分析实战 price_history[-1].

移动平均交叉

移动平均交叉策略(Moving Average Crossover)可以看作是上一种策略的拓展版,用两个不同规格的移动窗口来代替单个的窗口。100天的移动平均数序列中,要隔很久才会出现价格的突变,而20天的移动平均数序列发生突变的速度要快很多。

  • 当较快的移动平均值穿越较慢的移动平均值时,我们买入股份
  • 当较慢的移动平均值穿越较快的移动平均值时,我们卖出股份

对于该策略,我们需要另外载入100天的数据,以便于准备 warm-up 阶段。

接下来,我们绘制了两个移动平均价格序列。我们可以发现,该策略产生的交易行为要比 SMA 策略少得多。

移动平均线收敛差异

MACD 的全称为 Moving Average Convergence/Divergence,即移动平均线收敛差异指标,是一种常用于股价技术分析中的指标。

  • MACD 序列:快速(短期)和慢速(长期)的两个指数移动平均值的差值
  • 信号序列:MACD 序列的 EMA(指数移动平均值)
  • 差异序列:MACD 序列与信号序列之间的差值

MACD 的参数包括计算三个移动平均数的天数,即 MACD(a, b, c),参数 a 表示快速 EMA,b 表示慢速 EMA,c 表示 MACD 序列的 EMA。最常见的参数配置为 MACD(12, 26, 9),也是本文所采用的配置。若每周有6个工作日,这三个参数分别对应2个星期、1个月、1.5个星期。

必须记住一点,由于 MACD 是基于移动平均方法进行计算的,因此它是一种滞后指标。这就解释了为什么 MACD 在股市上的作用很小,它无法得出准确的价格趋势。

  • 当 MACD 线穿越信号线向上时,买入股份
  • 当 MACD 线穿越信号线向下时,卖出股份

和之前一样,为了准备 warm-up,我们要保证有34个历史数据值来计算 MACD:

接下来,我们绘制了 MACD 线和信号线,交叉点代表买入/卖出的信号。另外,你也可以试着用直方图的形式来展现 MACD 差异。

相对强弱指标(RSI)

RSI 的全称为 Relative Strength Index,即相对强弱指标,也是一种用于创建交易策略的技术指标。RSI 被看作是一种动量振荡器,它可以估测价格变化的速度和幅度。

RSI 的结果为0到100之间的数字,一般按14天进行计算。为生成交易信号,通常要指定 RSI 的下限为30,上限为70。也就是说,30以下在超卖区,70以上为超买区。

  • 当 RSI 低于下限(30)时,买入股份
  • 当 RSI 高于上限(70)时,卖出股份

下图绘制了 RSI 指标和上、下限:

效果评估

最后一步,把所有的评估指标放入一个 DataFrame 中,然后观察其结果。我们会发现在回测时,基于简单移动平均方法的策略在收益方面表现最好,其夏普指数也最高,即在特定风险下,可获得的收益最高。基于 MACD 的策略排在第二位。只有这两种策略的表现超过了我们所设置的基准。

结论

本篇文章介绍了如何利用 zipline 和 talib 进行交易策略的回测,使用的技术指标包括移动平均数、MACD、RSI 等等。但这只是一些基础,还有相当多更加复杂的策略。

量化投资技术分析实战 百度网盘,请问有没有哪位大佬知道咱们百度网盘怎么弄啊?

你可能会问,为什么要限制自己,为什么不直接使用全量的数据?这样做主要是考虑到一些实际的问题,比如最起码我们需要过滤掉缺乏流动性的股票。另外,还有一个不太明显但是很重要的原因:一个成功的cross-sectional(横截面)量化投资策略需要对股票池中价格数据的自相似性离散性之间做出平衡。我们先来看看什么是横截面分析?顾名思义,横截面分析是将一只股票与其所经营的行业进行比较,或直接与同一行业内的某些竞争对手进行比较,以评估绩效和投资机会。那么从数据的角度来看,为了评价体系更加智能和有效,这些股票在某些特征上需要具有一定程度上的一致性,比如把st股和非st股放到一起就不太合适。

在构建股票池的时候,必须特别注意你内在的投资理论,两者需要严格匹配。举两个例子, 量化投资技术分析实战 如果你想基于“隔夜消息对当天股票回报的影响”这个理论研发一个策略, 那么首先你需要过滤掉所有的ADR,因为时差的原因导致这套理论在ADR上是行不通的(ADR:美国存托凭证,主要解决非美国企业在美上市问题而存在的一种证券形式)。第二个例子,如果你的策略主要基于财务报表,比如“利润异常”,那么对于无法对这类指标进行有效的测算的股票就应该过滤掉(比如银行股)。

Alpha Discovery(因子探索)

Alpha是一个数学表达式,将它应用与我们选定股票池的横截面时,可以得到一组结果用于预测这些股票未来回报的相对大小。Alpha可以是由直接的评分构成,也可以是一个无量纲数向量。(无量纲化:简单说来就是为了将一些原本不可比的数据变的可比,无量纲化常见的方法包括:标准化方法、指数法、均值化等等)Alphas也通常被称为因子

如果使用Quantopian,你可以通过The Pipeline API学习因子建模。在因子探索阶段,不需要担心真实世界的一些细节问题,比如交易、手续费或者风险。你只需要不停的提出猜想,猜想存在一个因素会导致市场无效,这个因素可以是投资者行为、市场结构、信息不对称或任何其他潜在问题,并看看这个猜想是否具有预测能力。这非常考验脑力,实在提不出任何猜想怎么办?你可以试试用Google搜索“equity market anomalies”。当然更好的办法是访问SSRN,这里有很多有意思的研究等着你去发现。

Alpha探索是艺术和科学的交叉,是奇迹发生的地方。Alpha探索也包含一个产品迭代流程:猜想、测试、修正。 在Quantopian里,可以通过Pipeline API表达你的alphas,通过alphalens分析alphas的有效性。

Alpha Combination(因子组合)

加权方案可以非常简单:很多时候仅仅是对因子进行等级划分或者对多因子进行平均化处理就能产生显著效果。实际上,有一个非常流行的模型仅仅组合了两个因子,参见《 The Little Book That Still Beats the Market》。 随着复杂度的不断增加,你可以通过学习经典投资组合理论取得帮助,比如这篇文章《Markowitz portfolio optimization in Python》中,作者尝试找到最佳因子权重使得最终组合具有最低方差。

最后,我们还可以通过最新的机器学习技术去捕捉因子之间的复杂关系,比如,将你的因子转换为特征值并输入到机器学习分类器中,这也是一个非常热门的研究方向,如果感兴趣可以参考下面两片文章《Automated Trading with Boosting and Expert Weighting - Quantitative Finance》《Nonlinear Support Vector Machines Can Systematically Identify Stocks with High and Low Future Returns - Algorithmic Finance》。

Portfolio Construction(投资组合构建)

上一个阶段的产出是一个理想的投资组合和一个将目前投资组合过渡到理想投资组合的交易列表。而交易阶段,就是在市场中进行有效的交易。迄今为止我们所做的每一个选择,在这里都面临一些实现的问题:我需要的交易速度要多快?因子的预测能力衰减的有多快?在市场中被动的缓慢的执行更有效,还是积极的快速的执行更有效?总而言之,我们需要做好平衡,如果说股票池的构建是在价格分散自相似性之间做平衡,投资组合的构建是在风险回报之间做平衡,那么交易则是在因子衰变显性成本隐性成本以及投资意图的暴露之间做平衡。

To follow the path,
若要求道,
look to the master,
关注大师,
follow the master,
跟随大师,
walk with the master,
接近大师,
see through the master,
洞察大师,
become the master.
成为大师。

数字货币量化交易入门-服务器搭建

打开阿里云 - 上云就上阿里云官方网站,直接用支付宝扫码登录阿里云,然后在产品列表中选择云服务器ECS(Elastic Compute Service,云服务器 ECS_云主机_弹性计算_BGP多线_阿里云),点击立即购买。

选择适当的服务器配置、操作系统、计费方式,完成购买。需要注意的是,地域栏要选择香港来实现访问外部交易平台。由于量化交易所需的配置及内存都不高,选择最低的配置即可运行。下图是我使用的服务器参数,供大家参考。

本人服务器系统是windows server 2008 R2 企业版,是目前公认的稳定版本。通过远程登录上服务器,界面看上去与我们常用的windows并无明显差别。除了python和我还在服务器上安装了百度网盘,便于文件传递。

量化投资技术分析实战

达康书记的茶杯