我有个习惯,遇到好玩的产品会喜欢看做产品的创始人们是谁以及生活和思考的事迹,就像数据侦探一样寻找他们创作的蛛丝马迹。这个习惯保持了很多年,满足了我的好奇心,也间接和世界上不同国家优秀有趣的人在他们作品和文字里面交流了些许。2022 年这种好奇心不曾消减,以后我也会使用台杉这个标签去介绍。
01资产管理行业构建投资策略工具 Composer
这个产品在他们的新闻稿中写过这么一段,在过去的几十年里,资产管理界并没有发生太大的变化。提供全方位服务的财富管理公司仍然收取高额费用,但其价值却令人生疑。上一个真正的产品创新是交易所交易基金(ETF) ,可以追溯到1993年。但与其过时的前身相比,它管理的资产规模仍只有其的三分之一。
或许更令投资者沮丧的是,他们无法获得定制化和更复杂的投资策略,而这些策略通常是高净值财富经理和对冲基金的专利。它只允许自定义您所持有的资产。它没有提供更复杂的交易逻辑来决定何时买入和卖出,或者分配给每个持有多少。因此,更认真的投资者最终会使用 Excel 或 Python 管理他们的策略,每种策略都会带来一系列问题。
为什么软件还没有改变一切呢?Composer 就是来解决这些问题的,它是一个自动化的交易平台,帮助你建立一个类似于对冲基金的投资组合策略。Composer 允许您使用无代码可视化编辑器从构建块中创建自己的策略,并自动代表您执行交易。Composer 去年获得 Golden Ventures、 Not Boring Capital、 Basecamp AVG 和 Draft Ventures 等机构的 535万美元投资。
Composer 将投资策略进行数据、逻辑和交易执行三个维度的分离。Composer 则是一个单一的逻辑层,它以任意数量的数据提供程序作为输入,并将指令作为输出发送给任意数量的经纪商、交易所和/或托管人。
一旦逻辑与数据和执行完全脱钩,就有可能创建一个轻量级容器,来分享投资中最具智力价值和创造力的部分——投资策略。毕竟,投资策略是一系列依赖数据作为输入的决策。构成任何类型投资策略的逻辑决策都是链条中最有价值的一环,在 Composer,称这个策略容器为 Symphony。
02Ronny Li 的工作方法
Composer 的方向和我相关的工作挺接近的,我也借这个工具去学习投资策略的构建。在了解这个产品的过程中,对他们华裔 CTO 有了一些兴趣,讲他有意思的内容分享出来。Ronny Li,自2008年起在蒙特利尔工作,在费城长大,也曾在英国和中国短暂居住过,在麦吉尔大学攻读金融和市场营销。2012年开始和当时还是数据科学家的 Composer CEO 一起做数据分析师。
- 我是个懒人
- 我不希望处理 bug 超过一次(因此需要进行所有的单元测试并强调避免回归)
- 我不想手动运行程序(因此需要 CI/CD 以及代码和测试的热重载)
- 我不想在多个地方更改代码
- 我希望好的代码易于编写,而坏的代码难于编写
- 我不 想想太多,这迫使代码库和整个技术堆栈尽可能简单
- 我想用最少的努力做影响最大的事情(为 ROI 进行优化)
- I don't micro-manage
- 我让我的团队解决棘手的问题,而我解决容易的问题
- 我是最弱的
- 我可能永远都是团队中最弱的技术人员(事实上,这是我的招聘标准之一)。
- 我会继续学习,但是,我希望你也会。不要让我这个商科毕业生在 code 上超过你!
- 对你的反馈建议可能会慢,但请积极主动地向我寻求反馈。
- 我会对想法/建议/请求会进行详细的调查,看看是否有被忽略的地方。
- 你不必盲目地执行我所有的建议。大多数时候,我只是想看看你是不是已经考虑过了。
- 我为你工作!如果你卡住了或者有什么事情可以做得更方便,尽快让我知道。
03Composer 为什么选择编程语言 Clojure ?
我们一直把 Composer 当作一种投资的编程语言来打造的。投资语言的基本类型是什么?我们如何使它具有可扩展性、可执行性和安全性?这种语言能赚钱吗?最后,我们能让非程序员更容易学习吗?这只是我们要问自己的一小部分问题。我们也带着同样的问题选择构建 Composer 的编程语言。
我们最初想在 Python 库 bt 的基础上构建 Composer。我们喜欢这些策略的可组合性,CEO 和 Ronny 都非常适应使用 Python。不幸的是,bt 库有两个严重的缺陷:对于稍微复杂的策略来说速度极慢,有些需要10分钟才能运行,然后崩溃。你可以在相同的数据上运行相同的回溯测试,得到略有不同的结果,这完全没有意义,并且侵蚀了我们在库中所有的信任。
我们决定构建自己的库,这意味着我们可以用任何语言编写它。Java 和 c + + 是首先想到的,因为它们在金融领域被广泛使用。Ronny 重读了 Joel Spolsky 的一篇关于识别优秀开发人员的老文章,这篇文章将他带到了更早的 Paul Graham 关于 Common Lisp 的文章中。CEO 偶然发现了一条 Paul Graham 的推文,有人在几年前问 Paul Graham ,现在有什么相当于 LISP 的,可以投资 1000 小时来学习? ?它仍然是 LISP 吗?
Paul Graham 推荐了 Clojure,fibery.io 的 CEO 也说他们也使用 Clojure,Clojure 工程师的工作效率相比同水平的 JAVA 提高了5-10倍,因 Clojure 爱好者愿意打破常规。大多数人选择 Clojure 并不是出于经济原因。他们真的很喜欢编程和开拓视野。此一个2人的小团队至少相当于10人!
04Clojure
- 强调简单性,这意味着您的代码库很容易学习和记忆。
- 简洁的代码而不牺牲可读性,这意味着它更容易学习和维护。
- 一致的语法意味着很容易学习。
- 实际上,许多现有的语言和框架仍然在尝试合并 Lisp/Clojure 中已有的特性。
一个例子,打印前 25 个平方数,让我们看看对比。
(println (take 25 (map #(* % %) (range))))
👆 已经是 Clojure 语法的80% 左右了。
public class SquaresOfIntegers {
public static void main(String[] args) {
for (int i=0; i<25; i++)
System.out.println(i*i);
}
}
👆 可能仅涵盖了 Java 语法的 5%。
我喜欢 Clojure 编程语言这种简单性和一致性。
来源:
