当前位置: 首页 > article >正文

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 可视化统计

这些下次再写吧。


http://www.kler.cn/a/284753.html

相关文章:

  • 微服务(二)
  • Android音频架构
  • 32位、64位、x86与x64:深入解析计算机架构
  • AcWing 302 任务安排 斜率优化的dp
  • ️️一篇快速上手 AJAX 异步前后端交互
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • 量化交易backtrader实践(四)_评价统计篇(4)_多个回测的评价列表
  • Python 如何进行密码学操作(cryptography模块)
  • 通帆科技“液氢微型发电站”:点亮氢能产业新征程
  • Mysql的InnoDB存储引擎
  • Unity-高版本的 bundle 资源路径的变化
  • 在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型
  • 红黑树模拟实现STL中的map与set——C++
  • React 学习——zustand切片拆分
  • BUUCTF PWN wp--jarvisoj_level0
  • 入行「游戏策划」,该从何处下手?
  • 【FPGA】入门学习路线
  • 【QNX+Android虚拟化方案】114 - QNX /dev/switch 节点创建 及 读写功能实现实例
  • 3d网格补洞算法
  • 实测数据处理(RD算法处理)——SAR成像算法系列(十)
  • Python编码系列—Python中的安全密码存储与验证:实战指南
  • 每日一题,零基础入门FPGA——逻辑门
  • NFC射频--天线设计
  • 集成电路学习:什么是BIOS基本输入/输出系统
  • pytorch 均方误差损失函数
  • C_08_动态内存申请