跳到主要内容

· 阅读需 14 分钟
CZ

如今,你可以看到全世界琳琅满目的交易所、数据源,他们都有着各自不同的 API、生态系统。学习使用它们并将其纳入一种自动化的流程是一件非常费力的事。

外部系统 (External System) 是指不属于 Yuan 的数据提供商、交易所或者其他实体。 而提供商 (Vendor) 是指 Yuan 和外部系统的中介。

标准是一组概念、规则、指南和特性,用于确保提供商的概念一致,并控制提供商的实现质量。 我们希望建立一套适用于全球所有市场的统一标准,使得投资者仅仅需要学习这套标准即可与所有市场交互。

标准存在吗?

事实是,我们没有听说这个标准存在,这意味着它目前还没有产生,或者足够有名以至于我们知道它。

现在没有可用的标准有两种可能,第一,它永远不会有;第二,它现在还没有。

标准可以看作是一个所有提供商实例的高度凝练的抽象,如果实例的信息熵足够高,那么将不可能抽象出什么有用的标准。无论建立何种程度的标准,都不能降低我们认知实例的学习成本。这种情况下,就算建立了标准,也没有去学习它的意义。

如果有一个最终的标准存在,那么我们总是可以努力去把它找出来。

为什么是我们?

  1. 我们 NTNL 是一个交易者的自由联盟,代表交易者们的利益;
  2. 我们不具有特定的外部系统的立场;
  3. 我们没有外部系统那么多的法律合规责任;

概念一致性

当我们谈及一些术语、概念时,这应当是对于所有的提供商都是一致的,无歧义的。

Yuan 定义的标准概念,与外部系统定义的外部概念之间,一定存在差异。而提供商,扮演着将外部系统与 Yuan 连接的角色,就势必需要将标准概念与外部概念进行转换。

使用者学习了标准概念之后,理论上就无需去了解每个提供商内部的术语差异,即可丝滑地、完整地利用整个系统。反之,如果标准概念没有成功隔离掉外部概念,那么使用者就必须理解相关的外部系统的外部概念。面对一个庞大复杂的系统,使用者是很难去全面地了解每个外部系统的外部概念的。就算了解了,如果外部系统发生了变化,所有的相关使用者都需要去更新自己的知识。这是一件总成本很大的事情。在软件工程中,利用 “最小知识原则” 进行 “封装”,以隔离变化,隔离系统边界,有诸多好处。这就与我们所讨论的这个场景如出一辙。

事实是,不同的外部系统是不同的人制作的,目的不一,术语不一,对外开放程度不一。 不仅是具备不同文化背景、国家背景的市场之间没有统一,就连新兴的虚拟货币交易所,彼此之间都没有统一。

观点是,站在外部系统自身的角度来看,它是没有统一标准的内生动机的。这是因为,外部系统自身的职责就是将自身的系统做好,提升效率、提升质量。出于专业化的考量,统一概念并非外部系统的责任。外部系统不会考虑去迎合标准,除非有适合的标准且迎合标准是对自身有利的。

事实是,也已经出现过若干标准化的尝试。例如美国的 CME Group、中国期货市场的 CTP 系统、外汇系统的 FIX 协议、全球级别的券商 IBKR、虚拟货币的统一交易库 CCXT、以及区块链中的全链互操作性协议。

观点是,这些统一的尝试都具有一定的进步性,然而他们都是局部的、不严密的、或者说无心成为一个开放标准的。当下来看,整体是分裂的,局部是统一的。投资者,或者说资本,有着像更容易增殖的市场迁移的运动性。但投资者和资本又无法轻易跨过统一市场之间的障碍,这种障碍通常是政治性的,也有技术性的,总的来说构成了一种静止性。这种运动性就和静止性构成了一组矛盾。如果有一个好的标准,会使得投资者的运动性得到增强,削弱市场之间的技术性障碍,但对市场之间的政治性障碍没有影响。市场的局部保护主义不会受到破坏。总的来说,这是一种对现行体系的改良,而非革命。

如果我们想要达成使用者可以完全忽略各个外部系统的概念的目标,我们的标准就必须取所有外部概念的并集,以获得完整的表达力。否则,我们的标准就存在无法完成的任务,使得使用者被迫去学习外部系统的概念,我们的目标就失败了。

然而,一味地取并集,可能会导致标准概念的泛滥。标准同时应该保持精简,而不是变得臃肿。

一个反面的典型是 CCXT,它一定程度上对所有交易所公共的接口做了统一标准,但败笔在于它为一些非标准的接口做了妥协,允许用户通过 CCXT 穿透性地调用具体交易所的接口。这势必导致用户在使用 CCXT 的同时还对具体交易所的概念有一定的了解。这破坏了标准本身带来的好处。我们在接入 CCXT 的时候,发现通过它并不能完全隔离掉具体交易所的知识。归根结底,它的定位是一个代码库,它的职责是简化用户调用具体交易所的过程。它只做了部分工作,所以我断言,它未来也不可能会变成一个标准。

如果提供商被定义为一个应用,而不是一个代码库,情况就会大不一样。“开发者调用代码库”和“用户与应用交互”,在形式上是相似的,但在内容上是不同的。

例如,用户的目的是 “监控账户信息以发现异常”、“拉取全部数据以研究其中的规律”、“执行订单操作以改变账户头寸” 等等,而不会关心是轮询接口还是订阅套接字。他们仅仅关心达成目的的可能性和效果,而不会关心达成目的背后的实现手段。因此,标准需要针对用户的目的进行适当地、有主见地建设。

根据用户目的的不同,会对数据交互的实时性和准确性有不同的要求。

  1. 研究:对实时性无要求,但对准确性有高要求。毕竟失之毫厘,谬以千里。
  2. 监控:对实时性有基本要求,在几秒内都可以接受,因为目的是让人能够介入,人的介入不可能那么快,因此将实时性进一步做高,超越人的反应能力时,是没有意义的。对准确性也有一定的容忍度,因为人可以允许有一定的误报。
  3. 执行:对实时性要求高,对数据的准确性要求不高,因为受限于原始数据源的准确性,执行环境必须有自动容错纠错能力。

另外,算力资源和数据规模也会影响工程设计,但不是建立标准概念需要关心的维度。因为,计算能力是有极限的。我们仅仅需要从使用者的目的,来定义标准概念即可。

小结

概念一致性是标准的重要原则和底线。

有了概念一致性,后续的质量控制、安全性才能成为一个可以自动实施的切面。这些切面的定义,我们考虑另作介绍。

有了概念一致性,交易者们才能真正地不再需要逐个学习每个外部系统的概念。

· 阅读需 4 分钟
CZ

每个人都可以依靠投资交易,轻松享受世界经济发展成果

经济发展的最终目的是提高人民的生活水准。 依靠投资交易,享受经济发展,就是为了改善生活,这就是 No Trade No Life 的本义。

出于避免主题的过度扩大、引起争议,首先排除若干话题:

  1. 我们不考虑应当如何解决贫富差距的问题,这是政治问题,是政府社会管理人员需要考虑的课题;
  2. 我们不考虑应当如何直接促进经济的发展,这是科学问题,是各行各业的人才们需要考虑的课题;

我们站在每个投资者的角度来看,思考如何科学高效地管理自己的财富,帮助投资者克服投资过程中会遇到的困难。

我们想要阐明投资的困难性,并给出针对性的解决方案,使得科技能够增强用户个人的能力,从而帮助用户更好地进行投资操作。

那么,投资的困难到底是什么?

  1. 市场不停,投资太忙 (过量的信息 与 低效的处理能力 之间的矛盾);
  2. 需求多样,选项太少 (多样化的投资需求 与 少量的投资品供应 之间的矛盾);
  3. 想的很美,见识太少 (投资者的预期 与 投资者的能力 不匹配的矛盾);
  4. 想得当然,觉悟不足 (投资者的感性 与 投资者的理性 之间的矛盾)

为此,我们针对上述问题,分别提出针对性的解决方案:

  1. 利用包括 AI、云计算等一系列技术,实现自动交易,解放用户的时间精力,解放生产力。
  2. 用户可以自行从市场标准的投资品中,搭配复合的投资品,建立投资组合,建立私募基金,从而极大丰富投资品,以满足自身和周边朋友的投资需求。
  3. 从历史中找教训,从知识中找经验。丰富测试体系、并搭建投资交易知识库,帮助小白一步步成为专业投资者,并帮助所有投资者管理自身的预期。
  4. 通过数据可视化,将枯燥的数据,转化为可以通过视觉直接刺激用户感性思维的格式,帮助用户摆脱想当然的思维惰性。

如果终有一天经济发展的愿景得以实现,人民的生活水平得以提高,可能是因为:

  1. 如果投资依然重要,那么每个人都有一套好用的投资操作系统。(我希望那会是我们出品的 Yuan)
  2. 如果投资已经不再重要,那么共产主义大抵已经实现了。

· 阅读需 3 分钟
CZ

如今,Python 是量化交易中最流行的编程语言。VNPY、Zipline、PyAlgoTrade 和 Backtrader 都是用 Python 编写的。Python 在量化交易中被广泛使用,但可能并非最适合这项工作的语言。虽然它有很多优点,比如易于学习和拥有出色的数据科学生态系统,但量化投资平台如 Quantopian、JoinQuant 和 QuantConnect 却难以盈利,尽管互联网基础设施的成本在降低。这是因为软件依赖于算力,而算力在今天依然昂贵。

部分平台提供了本地安装的能力,这可能是一个更经济的选择,但对非专业的交易者来说,安装和环境配置可能会成为一个问题。为了解决这个问题,平台通常为用户提供了 Web GUI。况且本地安装的软件不具备跨平台性,无法利用云计算能力,而且很难实现高可用。

量化交易需要大量的研究和开发,而在模型研究测试阶段需要大量的算力,此时,云计算无论对于用户还是平台来说可能都是一个过于昂贵的选择。如果用户并不确信他们能从平台赚钱,他们就不会为此付费。

因此,针对这些问题,我们提出了一个解决方案:用 JavaScript 替代 Python。JavaScript 可以在浏览器中使用,允许用户利用自己设备的计算能力,无需进行本地安装。JavaScript 生态系统成熟且不断发展,使其成为最适合 Web 开发和数据科学的生态系统。而且 JavaScript 比 Python 更快。

我们已经使用 JavaScript 构建了一个量化平台,可以在浏览器和云服务器上运行。在浏览器中,用户可以完全免费进行研究和开发,直到他们想要在云服务器上运行模型。这样,用户可以在支付费用之前从平台中获得价值,而平台在收到付款后可以支付计算能力,形成一种双赢的解决方案。

未来,我们将分享如何在没有成本的情况下存储和分发数据,以确保平台始终运行。有了这些优势,我们确信 JavaScript 是未来量化交易的最佳选择。