量化交易的首次尝试


写在前面

i
距离上次更新博客已经过了一年多了,这么长时间不更新博客的主要原因是因为自身的懒惰造成的,最近由于突发奇想,又想把博客捡起来了,所以在这里希望更新一下,那么就先从最近开始做的量化交易框架开始做起吧!

为什么想到做量化交易?

因为最近股票一直亏钱…而且做长线实在是不够刺激,想寻求一些刺激的事情做做,让每天的生活充满激情,于是乎想到一种合法刺激多巴胺的方式,就是交易哈哈哈,Anyway,想用机器进行量化的交易的想法已经存在很久了,主要一直由于代码能力的限制,一直无法进行实现。最近本人完成了java的爬虫开发项目之后,加上chatGPT(这里手动狗头)的加持,愈发感觉身体内的一股代码的洪荒之力要喷射而出,刚好用在开发量化交易框架上,显得非常合适。

目前做到哪一步了?

说来惭愧,若干天的尝试仅仅实现了一个面向过程的MA5策略的回测,我甚至还不清楚回测的过程是否正确。

未来有哪些计划?

本人像构建一个属于自己的回测系统,并且通过简单的策略,便可发现合适的买入信号,这一套回测系统能够以面向对象的模式进行开发,并且附加文档,能够在未来进行维护的时候实现一个便捷的维护方式。更进一步,当开发的内容达到一定规模之后,我想将本人这套量化系统开源在github上,吸引更多的开发者共同修改代码,以达到完善代码功能和满足更多需求的目的。

本人目前的一些关于框架的想法

因为本人不是计算机科班出身,可能下面有些想法在计算机专业的同学看来比较蠢,但本人认为初步来看还是合理的,未来可能在实现代码的过程中会有一些不一样的想法。

问题的分解

  1. 获得股票交易的买入和卖出信号;
  2. 通过某个quote的API对一段时间内的股票走势进行询价;
  3. 通过信号和询价数据对利润进行计算,并对买卖价格、手续费、手数、日期进行记录;
  4. 建立数据对象。

第一步先从基于包的设计开始

我的想法是,先不build from scratch,在经过我激烈的思想斗争之后,发现build from scratch一方面太消耗时间,另一方面,可能会存在回测系统并不符合标准,即存在bug的可能性;并且回测系统有可能考虑不完全,无意义地消耗我大量的时间。于是,基于上述分析,我打算先基于一些包进行设计,等到后面有经验之后,在进行回测系统的搭建。

问题的分解

  1. 股票数据获取
  2. 计算交易指标
  3. 设计交易策略:择时策略
  4. 设计交易策略:选股策略
  5. 数据回测与优化(Zipline)
  6. 实现实盘交易(EasyTrader)

股票数据获取

之前我采用的是baostock的接口获取股票历史数据的,缺点是无法获取实时数据,如果需要历史数据进行回测还是有可行性的。目前,我在互联网上获知的一些接口包括天勤量化(期货接口),BigQuant、JoinQuant(免费近一年)等,可以接下去进行调研,貌似JoinQuant比较popular。

当然,我觉得到后期也可以自己实现一个数据接口,挂在自己的服务器上,就是不知道数据量的大小是不是非常大,可能需要评估这个的成本,提示:在Github上也有可能存在潜在的股票数据接口。

付费的股票数据接口有Wind和彭博,提供秒级的行情数据,可以获得最新最精准的交易数据。

对于基本面分析而言,基本面的数据的一手数据来源是企业的年报,企业的年报的来源主要是通过证券交易所的官网获取:

股票的年报中的最重要的章节就是财务报告,可以自行获取和学习。

计算交易指标

  • 涨跌幅(shift函数)
  • 计算买入卖出信号(where)
  • 持仓收益(直接按照公式计算即可)
  • 累计收益率(cumprod)
  • 最大回撤(rolling计算最值)
  • 夏普比率(每单位风险会产生多少超额报酬)

$$SharpeRatio=\frac{E(R_P)-R_f}{\sigma_P}$$

其中$E(R_P)$为你的投资组合的预期收益,$R_f$年化无风险利率(比如国债的收益率3%),$\sigma_P$为你的投资组合的收益率的标准差。

相关的内容可以在如下链接里找到:https://github.com/Delta-F/DeltaTrader

基本知识

财务指标查询

  • 资产负债表 体现企业家底和负债情况
  • 利润表 公司盈利能力、赚了多少、怎么赚的隐含着对未来利润增长的预期,体现了市场空间、成长能力
  • 现金流量表 权责发生制与收付实现制,利润表是权责发生制,是当签订合同后,默认我的利润表里马上就有体现;而现金流量表是权责发生制,是当现金到账后才会有体现。

常用财务指标

  • eps(每股收益) 净利润/股本数
  • operating_profit 收入-成本
  • roe(净资产收益率)归属于母公司两倍的净利润/净资产,相当于公司一定资产下的产出,反映了盈利能力,净资产的使用能力,回报率。
  • inc_net_profit_year_on_year(净利润同比增长率)

如何对企业进行估值

绝对估值法

计算了企业的内在价值,很难去真正估算股票的价值,并且估值法比较复杂,例如现金流折现模型等。

相对估值法

夏普比率

$R_f$国债年化回报$3%$左右,投资回报率的标准差$\sigma_P$

$$SharpeRatio=\frac{E(R_P)-R_f}{\sigma_P}$$

表示了投资者额外承受的每一单位的风险所获得的额外收益,所以$Sharp Ratio$越高越好。

假设检验

t-test

量化交易系统

基本框图

创建自己的股票数据库

最大回撤

$$
MDD=\frac{ThroughValue-Peak Value}{Peak Value}
$$

其中$ThroughValue$指低谷值,$PeakValue$指最大值


文章作者: 南航古惑仔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 南航古惑仔 !
  目录