之前看到一篇文章,变点理论CUSUM在量化交易中;列了一堆数据和公式,说结果不错。链接如下:

https://max.book118.com/html/2017/0726/124391946.shtm

或者这个,就是整理版,有很详细的公式推导,不过代码写的不清不楚的,应该没写完。

https://wizardforcel.gitbooks.io/python-quant-uqer/134.html

花了些时间研究下:

原理描述:CUSUM控制图的设计思想是对信息加以累积,将过程的小偏移累加起来,达到放大的结果,从而提高检验小偏移的灵敏度。CUSUM作为一个统计量,其由来具有严格的数学推理,总的来说,是一个变点假设检验通过极大似然法推导得到的统计量。

具体推导不研究了,直接看具体引用

其实就是我之前文章说到那个那个对数收益率,形成一个对数收益率的近似正太分布。如上图,这里有一个上下允偏量k,这里设为k = 0.02, 先说上阈值, 那么时序队列里面,下一个时段的对数收益率大于0.02,yi则差值为正;如果差值累计yi的和Ci大于h,比如h为0.5。则触发向上趋势。

其实就是如果多次超过 允偏量收益率发生,或者一次非常大的收益率情况发生,使得c值大于h 就会触发向上趋势判断。如果只是偶尔一次大于 允偏量,那么下一次小于k (0.02)时候,差值为负值,和值Ci就变小了,这里Max的作用就是保证C为正,不会因为多次低于k值为负值。向下趋势判断也是同理。

代码如下,这里调用ta-lib库来计算均值和标准差,速度比起用numpy还快一些。用标准差做为 允偏量k;5倍标准差为h 阈值。

# encoding: UTF-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import talib
def detect_via_cusum_lg(ts, istart=30, threshold_times=5):"""detect a time series using  cusum algorithm:param ts: the time series to be detected:param istart: the data from index 0 to index istart will be used as cold startup data to train:param threshold_times: the times for setting threshold:return:"""S_h = 0S_l = 0S_list = np.zeros(istart)meanArray = talib.SMA(ts,timeperiod = istart)stdArray = talib.STDDEV(np.log(ts/meanArray),timeperiod = istart)for i in range(istart+1, len(ts)-1):tslog = np.log(ts[i] / meanArray[i - 1])S_h_ = max(0, S_h + tslog - stdArray[i-1])S_l_ = min(0, S_l + tslog + stdArray[i-1])if S_h_> threshold_times * stdArray[i-1]:S_list = np.append(S_list,1)S_h_ = 0elif abs(S_l_)> threshold_times *  stdArray[i-1]:S_list = np.append(S_list, -1)S_l_ = 0else:S_list = np.append(S_list, 0)S_h = S_h_S_l = S_l_return S_list
#数据导入
df5min =  pd.read_csv("bar5rb8888.csv")
dt0 = np.array(df5min["close"])
listup,listdown = [],[]
s_list = detect_via_cusum_lg(dt0,istart=30, threshold_times=5)
for i in range(0,len(s_list)):if s_list[i] == 1:listup.append(i)elif s_list[i] == -1 :listdown.append(i)
plt.subplot(2,1,1)
plt.plot(dt0, color='y', lw=2.)
plt.plot(dt0, '^', markersize=5, color='r', label='UP signal', markevery=listup)
plt.plot(dt0, 'v', markersize=5, color='g', label='DOWN signal', markevery=listdown)
plt.legend()
plt.subplot(2,1,2)
plt.title('s_list')
plt.plot(s_list,'r-')
plt.show()

用5分钟螺纹钢数据跑出来,部分如下,好像有搞头。代码在我Github里面可以找到

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22259926/viewspace-2654170/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22259926/viewspace-2654170/

变点理论CUSUM在择时交易中的应用相关推荐

  1. 干货全拿走-用ExcelVBA做个股多模型交叉验证择时交易套利及回测系统

    之前分不同的模块做了多个基于Excel的股票量化模型,具体可以看这篇文章: https://blog.csdn.net/m0_64899365/article/details/126921893?sp ...

  2. 根据《LLT低延迟趋势线与交易性择时 短线择时策略研究》的python模型 策略开发

    <低延迟趋势线与交易性择时短线择时策略研究>  传统移动平均线(MA)的缺点 移动平均线(MA)是技术分析中常用的一类趋势跟踪指标,其可以在一定程度上刻画股票价格或指数的变动方向.MA ...

  3. 【Python 量化交易】什么是择时策略

    量化金融:什么是择时策略? 什么是市场择时? 市场择时概要 择时成本 损失机会的代价 交易成本的代价 真实例子 什么是市场择时? 市场择时,也可以叫做市场选时,是一种投资或者交易的策略.是一种基于某种 ...

  4. python量化交易--择时策略

    1.在banban网爬取所有A股的股票名称和代码. 观察板板网站的股票,将在深圳上市和上海上市的A股信息爬取并保存到本地文件 2.传入股票代码,利用tushare api提取股票的所有历史数据,对股票 ...

  5. 【点宽专栏】虚拟遗憾最小化(CFR)之量化择时与交易

    谷歌DeepMind公司研发的AI围棋AlphaGo在去年嗨翻天的时候,让我觉得现在的机器学习学习技术真的很NB,因为自己的专业,私下一直有关注机器学习在量化投资这块的一些实践.昨天看到广发出了一篇名 ...

  6. 盘点那些高大上的量化择时方法都有哪些?

    量化择时的概念    择时交易是指利用某种方法来判断大势的走势情况,如果判断上涨则买入持有,如果判断下跌则卖出清仓,如果判断震荡则高抛低吸,从而获得超越大盘的收益.量化择时就是使用数量化方法来找出影响 ...

  7. Python量化投资——股票择时到底能否赚钱?TA-Lib 33种技术指标有效性横向大评比

    TA-Lib中33种技术指标回测研究 `Python`量化投资--`TA-Lib`中33种股票择时技术指标的有效性研究 为什么要做这个评测 技术指标清单 评测方法 评测工具 测试方法及评价指标 期待你 ...

  8. 【量化投资】基金择时策略浅析(3) -实用择时方法

    常见择时方法 本系列第一篇文章中曾介绍过选品和择时的概念,并且提到过这两个其实都是定义比较宽松的概念,任何投资者在任何市场中做的投资决策,无论是依据基本面因素,技术指标,还是量化模型,都可以看作择时. ...

  9. 中低频量化交易策略研发04_ 简单的择时策

    4.1 择时策略的基本框架 图 4.3 多分类的基本择时策略框架 4.2 均线趋势策略的简单优化 这里进行的优化,其实就是很简单的将所有参数的可能组合都测试一遍,然后选取整体收益最高的参数组合,这种方 ...

  10. matlab中Cci,MATLAB量化交易策略之 CCI择时

    策略名称:CCI择时 策略思路: 1.CCI 为正值时,视为多头市场:为负值时,视为空头市场: 2.常态行情时,CCI 波动于±100 的间:强势行情,CCI 会超出±100 : 3.CCI>1 ...

最新文章

  1. HTML基础笔记-02
  2. PHP算法 《树形结构》 之 伸展树(1) - 基本概念
  3. VS 调试断点命中了,程序无法再断点处中断
  4. 期末考试前的预习,科目:化工设备与反应器(1)
  5. Codeforces Round #246 (Div. 2)
  6. Win7下如何挂载NFS共享目录
  7. 前端学习(504):垂直居中的第一种方式
  8. hikaridatasource连接池_完美!细数SpringBoot中的那些“连接池”
  9. Restlet Client 下载安装
  10. 34.【日期】计算后续日期--北京理工大学编程题
  11. es java api 获取总数_java Es Api --解决大量数据查询
  12. springcloud gateway + nacos 遇到503错误
  13. 【老九】【Python】函数与模块
  14. JAVA转义字符详解
  15. python的flask框架显示柱状图_使用Python的Flask框架,结合Highchart,动态渲染图表...
  16. No.2 Earth
  17. 计算机教室100字介绍,描写教室的作文100字
  18. 2016全国房价趋势
  19. 小白从零开始在jetson nano上进行YOLOV3-Tiny 与 tensorrt加速检测
  20. codeforces 1574 C. Slay the Dragon

热门文章

  1. 首发:Meltdown漏洞分析与实践
  2. 深入分析redis之rax底层原理,前缀树?
  3. 代码审计系列:审计思路学习笔记
  4. 【分享】.Net有哪些大型项目、大型网站的案例?
  5. 520男生送什么礼物好、实用小礼物合集
  6. macOS 控件教程(1)
  7. Chrome 68 运行后整个浏览器窗口变黄/粉色问题修正方法
  8. 阅读心得1:《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践 》
  9. Ac.wing 149. 荷马史诗
  10. 纽约:高速Wi-Fi将进入大街小巷 时时刻刻可无线上网