Python 算法交易实验85 QTV200日常推进-钳制指标与交易量

本文主要是介绍Python 算法交易实验85 QTV200日常推进-钳制指标与交易量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明

继续保持思考与尝试

最近挺有意思的,碰到很多技术上的问题,其解决方案都类似“阴阳两仪”的概念。

"阴阳两仪"是中国古代哲学中的一个重要概念,源自《易经》(又称《周易》)。它是对宇宙间最基本对立统一规律的概括,用以描述事物存在的两种基本状态或属性。
阴阳最初是指日光的向背,向日为阳,背日为阴。后来,阴阳的概念被广泛应用于自然界和社会生活的各个方面,成为解释自然现象和社会现象的一种基本理论。阴阳两仪认为,宇宙间的一切事物都是由阴阳两种对立而又相互依存、相互转化的力量构成的。
在阴阳学说中,阴阳并不是孤立存在的,而是相互作用、相互制约、相互转化的。例如,白天与黑夜、热与冷、动与静、男与女等都是阴阳对立的体现。阴阳之间的平衡是自然界和人类社会和谐的基础,一旦阴阳失衡,就可能导致各种问题的出现。
阴阳两仪的概念也被用于中医学、风水学、武术、书法、绘画等多个领域,成为中国传统文化中不可或缺的一部分。

在量化方面,恰好也由于近两年市场的反常,导致策略失效,颇有点“刚才开翅膀,风却变沉默”的感觉。这也促使我思考,怎样才能找到那个恒定的方法。

内容

最初做qtv100时,我发现回测效果很好的策略,结果在过去一年表现并不好(差不多持平的状态,看起来像白干)。特别是到了最近,4个混合的结果已经亏损了。大概在4月的时候还是盈利的。小盘成分还行,蓝筹和医药真是BBQ。这里有两个简单结论:

  • 1 过去一段时间的模式挺重要的,为什么会扭盈为亏?
  • 2 技术上讲,如果通过强化学习,输的自然被压抑,结果应该还是有救的
    在这里插入图片描述
    从一个更大的层面分析,问题出在哪?

我对于策略的期待是:如果是对的,可以自行合理放大交易。如果出师不利,可以自动冬眠,不造成,或者少造成损害。

最初,我简单的认为是由于判别模型的目标设定错误,“双刃剑模型”倾向于造成这种结果。

近期,我用SMA策略测试,发现无论以何种参数,在近3年都不可能获利。所以,这看起来并不是微观层面的问题,而是宏观上,在这个大周期内,原来的规律失效了

所以,问题等价为:我们如何能够判定当前是否是合适的模式呢?

在做这样的判定之前,我想先引入“钳制指标”的概念。这个名字挺难起的,我的本意是想表达一对双生的,此消彼长的指标。这个其实就很符合“阴阳”的概念。之前我自己总是用“一对对冲子”的称呼来指代这个概念,也还是感觉拗口。但我想,先有这么个模糊的概念,然后用具体的例子来明确。

在机器学习中,基本的度量方法是基于混淆矩阵提出的。

在这里插入图片描述

其中,Precision和Recall就是一对钳制指标:当一个指标上升时,另一个指标下降。F1则是一个(阴阳)调和的指标,很像我们说的阴阳平衡。

在有一段时间里,我自己对于Recall也是没有感觉的。比如我做了一个模型,我关心这个模型准不准,因为模型不准其实就废了。全不全的问题在某些业务里有时候也不容易度量和观察到Recall。例如信贷业务,我们可以知道模型预测为不违约(放贷),最终实际不违约的人数。分子是不违约人数,分母是总放贷人数。知道这个,其实是可以开展业务的,所以我会忽略掉recall的问题。实际上,一批人,特别是被拒绝的人群,我们知道实际上的不违约人数(比例)吗?不知道。如果要想分析,可能得要选择一批样本,然后去跟踪他们的表现,这样的代价很高,而且结果也可能不一样。例如,客户向国有行申请信贷,被拒绝后去向第三方金融公司借款,最终违约了。但是这可以等于当时向国有行申请获批后会违约吗?不一定。因为如果银行贷款违约,直接上征信黑名单,代价很高。而第三方金融公司的违约成本则较低,所以即使是样本违约了,也很难说明问题。

但是,在另一类问题里Recall是非常明显的。如果我们要从1000篇新闻中识别实体,模型给出了500篇新闻的实体,准确率是95%,这很容易判别。然后交给人去打标,发现剩下的500篇里还有300篇可以提取实体。这个场景下,模型的Recall同样重要,也很容易判别。在这种场景下,Precision和Recall都是重要的指标,因为我们会假设每篇新闻都是我们的business,都会以同样的概率被客户观察到。

回到量化领域,我们会假设每一分钟都可能交易。所以这时候不仅需要Precision,也需要Recall。

理解了钳制指标的意义后,我会觉得量化领域,更应该通过一系列的钳制指标来进行整体的度量和判断。回到最初的问题,我们怎么知道什么时候策略可用,什么时候策略不可用?

这里会有另外一对钳制指标:置信度(Confidence)和支持度(Support)。

在这里插入图片描述

我们通常关心模型预测的涨跌,这可以认为是置信度问题。当置信度高,就有理由相信我的买入和卖出盈利或者避免亏损的可信度高,从而进行决策。

现在的问题是:为什么一贯置信度高的策略失效了呢?

这就要关联到支持度问题。价格曲线是一直存在的,甚至只要成交1个亿也会有一条完整的价格曲线。但是成交量是不同的,我们经常看到的“量价”,是否应该分成“量”和“价”。量不是一定需要特别高,但是低于一定程度,或者可以认为是支持度降到一定水平,价的策略是否也就失效了呢?

或者从贝叶斯的信念角度理解,市场价格是多方博弈后的最终结果。但是player如果感觉到大家都收力了,是否也就会改变自身的发力,进而导致”口是心非“的局面?

交易量

所以我们来看看怎么分析全市场的交易量。

在这篇文章里提到了抓取每日交易量数据的接口。

我稍微调研了一下,这些免费的平台似乎都没有整个市场的交易量接口。我大致想了想,要么还是自己去抓取所有股票单日的交易数据,然后自己汇总。

  • 1 A股大概5000只股票左右
  • 2 按交易日统计

具体的内容:

  • 1 明确使用ak查询股票列表和获取日数据的接口,按照股票获取所有日期数据,每只股票大概最多也就几千个交易日
  • 2 使用clickhouse,声明ORM数据模型
  • 3 每次执行后,将数据存到数据库内,最后进行按日统计
  • 4 使用cufflinks 可视化统计

这些下次再写吧。

这篇关于Python 算法交易实验85 QTV200日常推进-钳制指标与交易量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126212

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: