当前位置: > 财经>正文

个人做量化交易靠谱吗?

2023-07-16 18:26:28 互联网 未知 财经

个人做量化交易靠谱吗?

——为了保证大家原来已经阅读过的内容不需要重新阅读,每次更新只做追加不更改原来的内容,如果是刚看到帖子的朋友,建议从后向前阅读。

2023年7月15日更新(最后一次更新)

时间过的真快,距离上次更新一晃就是两年,期间遇到了不少朋友的关注与讨论,这里就这个帖子做最后一次更新,这次更新主要有三个内容:

过去两年作为个人是否还在继续从事这项工作?交易系统是否有新的变化?关于被问到最多的价格摘要,给出一些增补的说明和少量价格摘要图。一些新的心得和为何是最后一次更新。

第一个问题,看一张图,下面是当前整个交易系统中备品备件中的CPU:

备品备件

如果上面这张图感觉像卖洋垃圾的,那么可以看下面这张图:

主集群

过去两年交易系统最大的变化:

从整个系统中剔除了KVM,全部改为基于Docker的微服务。这个改动使得整体系统的灵活性大幅度提升并且在硬件投入产出比方面的到了较好的提升。彻底放弃了关于长线趋势的预测,不是能不能做的问题,而是通过长时间的研究终于明白了长线趋势预测与我做的这件事情的初衷是矛盾的。系统运行稳定,原有的模型已经完成了一牛一熊完整的周期经历和考验,个人认为最初的目的已经基本完成。

第二个问题,价格摘要,这是发帖后被询问最多的一个话题,如果仅仅是文字描述是很难表述清晰的,这里补充一组图片和文字,希望对这个问题感兴趣的人有所帮助:

价格摘要长什么样子,以当前时间点向前推24个小时BTCUSDT现货交易对为例,样子如下:

7月14日-24h BTCUSDT价格摘要

叠加同周期的1分钟、5分钟、30分钟K线分别如下:

Price Profile + K1MPrice Profile + K5MPrice Profile + K30M

上面四张图仅供有个直观的感受,重点说明看下方:

K线的生成是对应周期结束时生成(滞后对应周期长度),而价格摘要的生成是:

精确到毫秒,即:即时生成。连续的,任意两个价格摘要的X轴坐标值是连续的,间隔必须是0。单个价格摘要一旦生成则不再改变,须保持到下一个价格摘要生成为止。相邻两个价格摘要的Y轴坐标值可连续可不连续,且,大多时候并不连续。上图只是将价格摘要与大家熟悉的K线放在一起便于观察,通过K线是无法生成价格摘要的,哪个级别的K线都不行。蓝色代表看多,红色代表看空,蓝色红色的价格摘要不代表下一个一定是同色(不对行情做出任何颗粒度的预测,这是关键!)。

上述说明参考下面的放大图:

Price Profile + K5M

之前我多次提到的5个价格点位看再放大的下图:

最后一组图也是最关键的,价格是在价格摘要中是如何运行的,其中的价格折线计算采样率为50ms,滑点当前模型能够控制在1/10000~9/10000,均值一般在万4,极个别行情剧烈的时候在万10到万40不等,但相对于所在行情的振幅都在收益良好的范围内:

有关价格摘要的实例就说这么多,仅仅是点到为止,仅供参考。

最后一个问题,量化交易,是一个很特殊的行业,特殊到你在知乎上可以找到成千上万的各种角度的帖子,但是,对不起,找不到任何一篇告诉你如何去“做”的帖子,我写下这个长长的帖子最初的目的就是想试图弥补这个缺憾,但后来,我发现大多数人们对钱的兴趣远大于对技术的热情,大多数人缺乏持之以恒的耐心,甚至对我这种描述都觉得不能理解,产生了志不同道不合的感觉或错觉,所以,就此画个句号,不打算在这里继续花时间了。

2023年7月31日更新

有关K线和原始数据。可能由于个人对金融领域的不够熟悉,近日在于答友们交流的过程中才发现个人写下这篇回答之初对一些概念的理解是有偏差的:

对常用的裸K这个词语有误解,本人是基于原始数据进行分析的,即逐笔或聚合后的逐笔,本回答中所有的内容都是围绕这一前提展开的,但不是裸K,个人对裸K的理解有误,如果在下方的回答或者评论中遇到我提到裸K的描述烦请按照逐笔原始数据来理解。仔细重新审视了一遍回答中的各项内容或思路,这里需要特别指出的是,回答中几乎所有的内容对于基于K线(或其它形式的特征提取后的Bar)的分析都是不适用的,不但不适用,而且可能会给实践者带来不必要的困惑,甚至得出错误的结论。包括交易策略和软件两个方面,例如:如果使用K线,即便是同时监控1000个交易对,很高概率不需要类似配置的硬件设备。例如:如果使用K线,是无法看到我称之为动态周期的形态,或者,有很高的看错几率。例如:软件回放(仿真)是无法通过K线来实现的。例如:滑点对个人策略的影响基本可以忽略不计这个结论如果基于K线数据的话是错误的。等等。我一度认为大家有共识的量化交易大概率默认是基于逐笔数据的,但实际情况的确存在各种差异。本人回答中提到的各种思路可能在仅提供K线数据的各种量化平台上无法尝试或实践。基于K线数据的可视化样例(K线周期:30m)基于原始数据的可视化相同样例(采样聚合周期:50ms)两种不同的数据的可视化叠加与差异比较2023年7月28日 更新

如果是刚开始,选择哪个市场比较方便:推荐数字货币这个市场,因为:

各大头部交易所都提供相对完备且符合主流的API接口,且,无任何门槛(无资金门槛、无链路门槛、无许可门槛)。其中有一个交易所还提供完备的历史逐笔数据,对于研究量化交易无须购买。至于哪一个交易所,自己百度或者谷歌一下很容易知晓。数字货币的交易是7x24小时的,其连续性提供了相对完善的交易样本的多样性。但也因此缺失了开盘收盘阶段的特殊情况。具备典型意义的交易对:BTCUSDT、ETHUSDT,基于历史数据的分析,BTC的共识度在过去的两年中持续上升从未下降过,故BTCUSDT交易过程多空交锋激烈、干扰信号相对较多,而ETHUSDT相较BTCUSDT特征更为明显一些。或选择24小时成交额在2000万美元以上,1-2个亿美元以下的交易对作为起始的研究对象,但最终样本不要拉了BTCUSDT。数字货币交易买入卖出都需要承担手续费,建议仔细研究各个交易所的费率表及影响到费率的各种条件,存在少量交易所向Maker提供负费率,有这方面策略倾向的可以关注。几乎所有的数字货币交易所都支持:现货(仅支持做多)、交割合约、永续合约、杠杆等特性或细分市场,对于侧重不同类型策略的研究都可以找到适合的对象。数字货币的特殊时间点:凌晨0点、凌晨4点、凌晨5点、上午7点-8点之间,在这些时间点发生行情的概率会相较于其它时间点略微明显,但不代表行情仅在这几个时间点。重要的事情说三遍:不建议参与炒币、不建议参与炒币、不建议参与炒币!研究数字货币或作为资产购买并长期持有主流数字货币是有一定价值共识的,但是不建议在不了解的情况下参与炒币,风险比股市要大不少,特别是不了解基本面或基本面不清晰的AltCoin。不要向本人询问有关行情的信息,本人不做预测和分析也没有这个能力,本人仅仅是个独立宽客,不是股评家。无法访问交易所:请自行百度或谷歌解决方案。建议多少了解一下类似于:区块链、公链、分布式账本、智能合约、挖矿、去中心化金融等基本的概念,虽然不需要从事区块链的开发工作,但对于理解数字货币的基本面还是有帮助的。

如何获取数据以及获取什么数据,并开始研究:

每个交易所的Website的下方都有API Doc的连接,并且基本每个交易所在GitHub上都有自己的资料库。几乎所有的交易所都支持RESTFUL接口,绝大部分交易都同时提供WebSocket接口,但是不同的交易所对接口的访问频度有不同的限制要求。交易所中的接口是分类的,有行情接口、交易接口、钱包接口等等,如果你需要K线、逐笔、深度、Ticker等市场的常规数据都可以在文档中找到相应的内容。每个交易所通常一种协议会对应一个访问地址(有些交易所不同协议不同IP,有些交易所不同协议复用IP);有些使用的是CDN网络(几乎是固定的几个入口IP),有些使用的是自己的负载均衡体系(数百个IP,并且还会随着时间的推移而变化),总之,确实存在一些方法,让你能够对这些资源的使用更加的Smart,在结果层面总是以完整、最优的方式拿到数据。下面有一些交易所不同协议在提供服务的资源情况作为示例供参考。不推荐通过代理服务器在实盘中使用,稳定性和性能都很糟糕。如果你使用的是本地代理,且目的仅仅是为了对自己的交易系统解耦,请留意有些代理软件对于CONNECT方法默认是不通过443以外的端口的,需要自行添加。否则,有些交易所的WebSocket端口不是默认的443,不添加则无法正常通过本地代理连接。个人认为最有价值的是逐笔数据(有些交易所还提供聚合后的逐笔,这类数据与逐笔在个人实践中未发现差异能够对计算结果带来显著的影响,但可以降低数据获取的次数和总流量),个人如果需要K线或不同级别的K线都是自主生成,但不同偏好的同样可以在交易所获得现成的数据。个人做过多个物理城市多个运营商的链路测试,测试结果不完全一致,基本都能够把到内存延时控制在100ms以内,但最快也未优于20ms,且这个20ms中还存在有少量的误差。部分交易所提供完整的历史逐笔数据,这对于通过逐笔数据研究量化策略来说是一个方便的途径。可以通过交易所提供的库附加自己的少量编码获取,或自行编码获取。某交易所RESTFul服务地址示例某交易所WebSocket服务地址示例另外一个交易所RESTFul服务地址示例

说明:上述示例中的Ping延时不等于实际数据传输延时,这是两个概念;WebSocket的Ping延时代表的是Connect连接完成的延时,部分交易所WebSocket Server不可Ping。

2023年7月24日 更新

几天前回答了这个问题之后,由于个人在回答中列出了许多具体的细节,也由此引发了一些朋友的询问,个人把在互动过程中认为原贴中缺失的内容会以更新的方式逐步补充进来。等未来累计到一定程度之后,个人会全面重新整理一下,并关贴供喜欢这个行业的朋友参考之用。

有关成本问题,整件事情剔除个人的时间成本、学习相关知识采购书籍、向专业交易人员请教的社交花费这些软成本之外,还是有一些硬成本的,我大概罗列一下,供参考:

什么决定了你的成本:你的目的和主交易思路决定了你的成本,高频交易、中低频量化交易、自动化交易、辅助分析但人工交易等目的与场景不同,需要的装备构成不完全相同。当目的和主交易策略确定下来之后,操作的资金量大小相当高概率会以正相关的形式影响到你的成本,并且这种正相关不一定是线性的。本人的目的是纯自动化交易,下方谈及的成本也都是服务于这个目的及其所需要的交易策略的。场所:目前个人有两个物理地点不同的普通商品房,集群的不同物理节点分别部署在这两个不同的地理位置。可能有朋友会问,为何不使用云?我个人的观点很明确:无论如何不要使用云服务,这件事情与成本无关,除非你在学习和探索过程中。能否主机托管?这取决与你的系统架构,如果你的系统架构能够很容易解耦出来一部分去托管而不是全部,且,你有办法彻底的保护好你的交易策略(如自毁)。我目前举例的这种场所不适合进行高频交易,高频交易的客观条件远不满足。链路:主要的交易场所:2条普通200M的家用宽带,1电信1联通,热备的交易场所:1条普通200M联通。链路需要热备。这三条宽带均摊到每个月的成本大概200元左右,而现在这些运营商都有一些和手机绑定的套餐供选择。计算设备:自己组装的Server x4,每台的配置都差不多,两个CPU,都是E5 2696/2697 v2的,512G内存,800G左右的U2硬盘,其中有两台物理位置不同的Server配有HDD阵列,一个20T一个40T,不单独计算了,4台所有东西合计在一起个人购入时累计总成本接近11万元。配件除了HDD硬盘全新之外,剩余的基本都是洋垃圾。所有这些设备计划使用3年(实际应该高于3年,3年后个人另有打算),按月折旧大概每个月大约3000元。这些设备的利用率反映出来的必要性如何?这里需要说明的,你的设备的配置需要按照行情峰值时测得的结果来估算,而不是按照均值,在交易系统软件结构优化比较彻底的前提下,一般只看CPU就可以了(因为剩余的都是可以提前优化或者加量的),目前我这个配置在极端行情的时候是接近75%的满载——即48T的CPU Linux捕捉的CPU利用率75%,时间是今年的3月12日,这种极端行情一年也不会有几次,但你得准备着。UPS,两边各有一个,APC的,一边独立使用,另一边通过主Server管理所有设备,只能撑3分钟,主要解决断电时主要现场的保存和安全关机,其它的数据在断电时不保存,丢了就丢了,不碍事。每个650元,两个合计1300元,一次性投入就不算均摊折旧了。网络设备:没有路由器,用的软路由;没有额外的网卡,选主板的时候选的都是4网口或2网口的主板;主交易场所有一个8口的交换机,大概300元。内网全为千兆,考虑未来将分析服务器到桌面升级为万兆(提数速度加快);两个光猫,运营商给的。这部分总计费用很少,也就不计算入成本了。冷备设备:群晖1515+,60T硬盘,主要用来冷备各种数据、代码、分析过程等。设备+盘,大约15000元,这部分计算使用5年,盘也选的5年换新的,按月折旧大约250元。索引节点:购买了1个阿里云VPN(1U的),一次购买了5年,主要看中阿里云永不断电、断网的特性,其上没有放置任何交易系统的服务,仅放置了一个自己写的索引服务,该索引服务主要解决不同物理集群的关键信息索引问题,进出流量都很小,所以购买的按流量计费的带宽(搞笑的是,实际流量太小,月月被抹零,开始存了5元进去,到现在还没花完)。这个VPS的成本可以当做0了,没多少钱。电费:Server的电源配置两台600W两台750W,NAS功率很小,所有设备都是24小时运行,但并非所有设备24小时都是满负荷运行,有个有意思的现象就是:有时候功率表上的数字与行情大盘数字是同节奏的。费用给不出分项的数字,只有一个总数:每月约1000元左右的电费(按经验扣除了家里的其它用电费用)。购买数据:没有这部分成本,数据都是交易系统自己获得的公开数据,没有购买过。备品备件:U2 SSDx2(1500),内存条x10(4500),HDD硬盘X3(4000),独立PCIE千兆网卡x2(300),合计约10000元。按3年折旧,每月约300元。为什么要备这么多内存条,因为:1)洋垃圾买的多了,难免遇到有问题的,并非所有的情况都可以换货或者来得及换货。2)我所在城市比较潮湿,有一定几率遇到金手指氧化的情况,定期维护的主要内容之一就是清理内存条的金手指。

暂时想到的就是这么多,如果有遗漏,以后再补充,以上整个算下来大概费用是:4950元/月,如果所有3年折旧的按5年折旧计算,费用约3500元/月。所有的这些费用的前提是一切都在自己家里完成,个人计划未来能够自己建一个小小型的机房,解决好温度、湿度、用电之类的设备管理问题。这个是目前个人的状态,只要你的交易系统和交易策略可以,去Cover这个成本还是相当容易的。当然,如果刚开始,不需要折腾这么多,最好是你意识到缺什么的时候再采购什么,上述内容仅仅用来做一个参照。

有关动态周期,回答作出后有关回答中提到的动态周期是询问和争议最多的一个词语,我承认这个词语是我自己创造的,因为我找不到一个更合适的词汇来描述这种识别结果,但这个词汇的确带来了不必要的无解,这里重新梳理一下,动态周期:

它不是指数据的采样周期,不是指数据的计算周期,不是指特征提取的数据范围——即:不是一个Bar的概念。它指的是市场交易过程中的一个冷热周期,长短无法指定。在我的交易系统里面没有Bar的概念,因为个人认为无论怎么设定Bar的大小都不能满足交易机会发现及时性的诉求。交易系统会实时计算动态周期,但是不会实时预测动态周期,动态周期的计算结果是非常精确的,这种非常精确的误差仅依赖于事前设定的参数,最高误差可以等于1ms,我目前在用的是50ms。但是,这个动态周期结束与否的信号是滞后产生的,这种滞后在不同周期里面滞后的大小也不相同,这也是个人说无法预测的原因。为了弥补这种滞后,才叠加了价格摘要的预测。两种方法合在一起,其实说明的是一个简单的逻辑:市场是不可预测的,我们唯一能做的就是无限逼近,让当下对趋势判定的结论与真实趋势相一致的时间百分比尽可能的高,然后选择中段部分进行交易,在两头部分止盈或止损。

有关软件复杂度的必要性,和我之前遇到或预计的差不多,还是有蛮多的朋友不理解为何一个个人金融交易系统要把软件部分做的如此复杂,我相信这是一个认知问题,截止到目前个人完成的软件部分差不多都是被倒逼出来的,并非主观臆想出来的,并且也庆幸熬过了最难的阶段。对于这个话题我相信有相同经历的人一定会有相同的感受,而通过文字,个人觉的能做的就是多举几个例子:

目的不同,产生的对软件结构的要求自然不同,目的是否是全自动化交易会是软件结构的一个很大的区别,在知乎上有关量化交易的帖子里面看到一位同行描述自己踩过的坑:因为软件的一个Bug,让在15分钟内亏损了30万(这个帖子还在,可以自行查找,我这里就不贴

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。