说明
念念不忘,必有回响
最初的时候,完全不了解架构方面的东西。后来决定要搞好这一块的时候,也就是不断的琢磨,到现在4年的时间,改变已经非常大了。现在习以为常的,都是当初梦寐以求的,而且在可见的未来 ,架构方面会达到一个足够完善的程度(数据库、中间件、调度、监控、自动化部署、微服务、分布式计算、分布式IO、并发…),现在大概是在偏运维领域进行补全。
总之,应该算达到当初期望的,架构足以支撑一个巨大的算法体系。
量化则是一个更早、更大的目标。某种程度上说,搞架构和算法,一个里程碑式的成果是一个强大的量化体系,一套完全自主控制的体系。在我设想中的量化系统,是一个精简,但是内容很多的系统。首先是长期、大量的存储与计算基础,这部分我举得可以视为达到了;其次是算法体系。强化框架、优化算法、判别模型 、近似计算、模式识别、规则引擎、推荐算法、推理模型、特征提取算法、图算法… ,这部分的进度现在反而比架构要慢一些,但是结构和领域划分是清晰的。所以未来几年,我会在算法领域聚焦,达到预设的目标。
有了基础的架构和算法之后,就需要结合具体的业务进行实现。首先我一定是技术派,然后可以分为宏观层面和微观层面来讨论实现。去年我速速做了一版微观层面的尝试(qtv100), 结果其实还行,但是这一年来行情不行。当然,qtv100还有一些本身的问题,这也是停下来反思和调整的原因。宏观层面是最近才开始触碰的,整体感觉就量化整体来说,有很多常识性的东西我还是欠缺的。
这里,做一些总结,明确后续的路径。
内容
从务实的角度出发
不要只停留在很抽象的层面思考量化,这和做白日梦差不多。一种务实的方式是从一些最基础的事开始做起,比如说先收集数据,然后分析数据。而且我觉得可以先粗后细,粗的到天,细的到分钟,应该就够了。
1 数据维度
从市场数据看,有哪些数据是最相关的?
A股的指数,首先是交易所级别的:沪市、深市;然后是板块级别的:房地产、半导体;之后就是各个ETF的值。
除了A股,还有全球市场交易所级别的数据。
这些数据按天获取应该没有难度,但其实并不简单,后面还有很复杂的处理。(所以,先按天这个频率是对的,有助于快速的原型构建、验证)
紧密相关的金融数据
融资融券数据,银行间拆借利率,债权类数据,金融类舆情数据
公共数据
用电量数据,进出口数据,就业数据,主导性媒体舆情
当这些基础数据都完成时,整体的常识会上一台阶。所以在收集数据的过程中,我还需要了解每一部分数据的含义,关联。
2 数据处理
数据会撒谎
真正有难度的地方在于数据处理。首先,我们只考虑一个数据源的情况。例如市场指数,我们只从东财的接口获取。我们获得的数据,其实又可以称为观察(Observations), 并不是直接的真相。但是通过这些观察,我们可以推断出真相,这才是这部分工作的难度。
这个是之前我设计的一个处理框架:
大体上,获得数据后,首先会存库,这是第一层。这一层讲究尽可能全、即时的获取逻辑上应当获得的所有数据。确保我们存储的数据与数据源在那一刻一致即可。忠实的记录下数据即可。
接下来,数据会进行清洗,存储到数据库中。清洗是将原始材料规整化的过程。一种情况是数据大体上是好的,通过清洗使得数据从基本可用到完全可用;一种情况则是数据大体上是坏的,清洗是提取出其中一部分好的部分。本质上,这里是用强规则处理数据。
对很多公司而言ETL之后就开始使用了,如果数据之后出了问题,大抵是责备供应商,然后换一个;又或者是反思ETL哪里还没做好。我觉得这两种方法是对的,但是很快就会无可改进。数据源就那些,ETL则会跟着不同的数据源变化,还会和各种例外情况打交道,永无停止之日。
所以需要第三层,这层的空间大小甚至可能是前两层的数千倍。
第三层主要通过假设+推断的方式,会生成大量的假设空间。当各个不同为的数据在Tier2(Clean Data)汇集完成后,首先要进行主数据合并。这里已经不是之前的简单的规则可以搞定的了,例如,某条数据是 {name:leo, age:13, gender:male} ,后来又有一条数据 {name:leo, age14, skill:python} ,那么这两条需要合并为一条吗?age需要更新吗? 我们希望的是,如果两条数据真的都是某个leo的,那么应该会有一个唯一的entid来指代,且gendor来自第一条,skill来自第二条,而age通过两条数据,甚至可以推断出一个birth_date,然后抛弃掉age这个值。这就是主数据。
如果现实的数据非常复杂,我们甚至不知道那个是对的,此时就会产生多个假设空间。 每个假设空间后面又会有更多的假设空间,例如当有了主数据之后,我们需要提取特征,所以在主数据空间之后,会连接特征空间。然后特征空间本身又会有多种假设(算法)进而产生更多的假设空间:为了更好的表达状态、行为、属性等的模式或者可辨别属性。
决策是基于这些像树状展开的空间进行,可以使用git的分支数据结构来理解和描述这大量的空间。
我们永远也不可能获得真理,但可以无限逼近
通过大量的推断、模型,我们最后可以获得一个可靠的决策,从而实现我们的目标。整体上,很像我们的显示器从黑白、彩色、CRT、LCD、LED这么一路发展而来,分辨率从1080p到2k,4k,视网膜… 不断提升。到多少才够呢?不同的人、不同的场景有不同的需求,够用就好。
所以,假设原始数据是1,那么要达到目标所维持的假设空间大小可能是10000
。
除了空间大(这个好解决,花钱就行),为了达到逻辑上的可靠,所牵涉的算法复杂才是最难的。例如:
- 1 这条数据有问题吗? (逻辑上,怎么判定问题,有可能是通过假设-验证来判定)
- 2 这个推断可靠吗? (概率分布)
- 3 这种提取、变换是合适的吗?(特征计算方法)
- 4 这个假设空间可以用于这个决策吗?(强化框架)
- 5 如何更准确的判别?(判别模型)
- 6 可以进行模拟来帮助作出决策(以及验证)吗?(生成模型)
- 7 如何找到更好的特征生成方法?(优化算法,如遗传算法)
所以,保持一个相对简单的数据,有助于搭建并验证真正的数据处理框架(这也是抽象上,一个理性人所作出的动作)。
我好像明白未来一段时间要做的事了。
3 数据指标
数据指标(Data Metrics)是用于衡量、评估和监控特定业务、流程或系统性能的量化标准。它们通过收集和分析数据,帮助组织了解当前状态、识别趋势、发现问题并做出基于数据的决策。数据指标通常是具体的、可量化的,并且与组织的战略目标或业务需求紧密相关。
常见的数据指标类型
-
业务指标:
- 收入:总收入、月度收入、季度收入等。
- 利润:毛利润、净利润、利润率等。
- 客户获取成本(CAC):获取一个新客户的平均成本。
- 客户终身价值(CLV):一个客户在整个生命周期中为企业带来的总价值。
-
运营指标:
- 生产效率:单位时间内的生产量、生产周期时间等。
- 库存周转率:库存周转的速度,衡量库存管理的效率。
- 订单履行率:按时完成订单的比例。
-
市场营销指标:
- 点击率(CTR):广告点击次数与展示次数的比率。
- 转化率:访问者转化为客户的比率。
- 客户满意度(CSAT):客户对产品或服务的满意程度。
-
产品指标:
- 活跃用户数:在特定时间段内使用产品的用户数量。
- 用户留存率:在特定时间段内继续使用产品的用户比例。
- 功能使用率:特定功能被使用的频率。
-
财务指标:
- 资产回报率(ROA):衡量公司利用其资产创造利润的效率。
- 股东权益回报率(ROE):衡量公司利用股东投资创造利润的效率。
- 流动比率:衡量公司短期偿债能力的指标。
数据指标的重要性
- 决策支持:数据指标为决策提供了客观依据,减少了主观判断的风险。
- 绩效评估:通过数据指标,组织可以评估其业务流程和战略的有效性。
- 趋势分析:数据指标帮助识别业务趋势,预测未来发展方向。
- 问题识别:通过监控数据指标,组织可以及时发现问题并采取纠正措施。
选择数据指标的注意事项
- 相关性:选择的指标应与组织的战略目标和业务需求紧密相关。
- 可操作性:指标应易于收集和分析,以便及时采取行动。
- 可理解性:指标应简单明了,便于所有相关人员理解。
- 可比性:指标应能够在不同时间段或不同部门之间进行比较。
通过合理选择和使用数据指标,组织可以更好地理解其业务状况,优化运营,并实现其战略目标。
上面是来自deepseek的回答,主要是帮我们预先reload一些mindset。
假设是一个量化系统,我想指标应该可以围绕几个部分:
- 1 基本数据信息。例如数据的条数,价格曲线这些,背后的逻辑是帮助我们确定系统是在正常运转的。
- 2 机会数据。例如通过CV,判断沪深300是否可能处在行情期,或者是失去焦点的状态。这是偏宏观的。
- 3 风险数据。例如通过银行间拆借利率,发现流动性大幅收紧。
- 4 持仓情况。确保持仓的时间、空间分布是合理的。
- 5 交易数据。近期发起的交易数据的频率、交易额是否符合预期。
- 6 策略表现。当前活动策略的分类、排名。
- 7 研究数据。如当前执行中的算法计算进度。
- 8 回测数据。大量假设策略无差别运行所产生的数据,辅助判断当前策略选择的合理性。
4 总结
自顶向下,自底向上
过去的很多行为是自底向上的,现在则是自顶向下。过去的经验告诉我,final solution 会在这个过程中产生。两种方向的探索,会在中间的某一个部分融合,达到一个兼顾、平衡的体系。
Go ! Go ! Go!