一、先讲改名这件事
我们这周把产品正式从 LG Data Platform 改名叫 Privora 泊睿,slogan 是「你的私人 AI 投资管家」。
改名的理由很朴素:旧名字太像内部代号。一个没见过这产品的人,光看 LG Data Platform 完全猜不到它是干嘛的 —— 是数据中台?BI?ETL?听起来都沾边、但都不准。
Privora 泊睿想传达的意思是另一个维度的:你写的策略代码、跑的数据管道、沉淀的研究资产,有一个稳定专属的停靠地。"泊"是停靠,"睿"是智能判断。
老用户一句话:API Token 不变,调度 Job 不变,数据资产、看板、工作流全部原样保留。下次登录只是 logo 和名字换了。
但这篇不是写给老用户的。这篇想讲的是平台这周同时上线的一件更大的事 —— Marketplace 的策略发布与订阅,以及它背后几个我觉得值得写出来的工程取舍。
二、为什么"脚本能被订阅"是件大事
做过量化研究的人应该都有类似的体验:你写过一些自己觉得还行的策略,跑在自己账号里,每天盯着指标。
偶尔你会把代码截图给朋友看,或者丢个 gist。朋友说"看起来不错,我怎么跑?"你说"你先装 Python、装 backtrader、接一下行情源、把我的代码 copy 过去改改参数……"。
然后这件事就没有然后了。
问题不是你不想分享,问题是工具链让分享这件事的摩擦远高于自己用。
而另一端 —— 有一批人对量化感兴趣,但不会也不想写 Python。他们找遍市面上的产品,要么是"给你推荐买什么股票"(黑盒观点),要么是"把钱交给我们"(基金产品)。没有一种东西是"把别人写好的策略原样搬到我自己账号下,让它每天帮我自动跑"。
供给侧和需求侧都被工具链卡住了。
Privora 这次做的事就是补这一段:把"策略"做成一个可发布、可订阅、可隔离运行的对象。
三、发布者路径:一个云图标背后的设计取舍
你是写策略的人。你在 Privora 的工作区里有若干个流程,里面跑着你日常用的策略。
现在在流程列表页每一行右边,多了一个云图标。点一下,系统会:
- 把当前版本的代码 + 配置 + 依赖关系做一次完整快照
- 把这个快照pin 住作为发布版本
- 发布到 Marketplace 的策略 tab 里,其他用户可以看到并订阅
看起来就是一个"发布"按钮的事。但背后有四个很硬的设计选择值得聊一下,因为每个选择都有"另一种方案",我们选的不一定是最简单的,但是最保护两端的那一种。
取舍一:版本 pin vs 实时同步
你发布之后,继续在原流程上迭代。你改完一版觉得更好了,下一版可能觉得还不行 —— 都是正常研究节奏。
问题是:订阅者看到的应该是哪一版?
- 方案 A:实时同步。你每次改动,订阅者自动拿到最新版。
- 方案 B:版本 pin。订阅者看到的永远是你上次正式发布时 pin 住的那版,直到你再点一次发布。
我们选 B。
理由是:作者的迭代节奏和订阅者的稳定需求是天然冲突的。作者想快速试错,订阅者想要确定性。实时同步会把作者所有的不稳定性下推到订阅者身上 —— 你周一看 Sharpe 1.8,周三作者临时写了个 bug 版本,你的调度跟着一起炸。
版本 pin 的代价是作者需要主动再发布一次才能推送新版,但这个"主动"恰恰是一个健康的摩擦:它强迫作者在每次推送给订阅者时,自己先停下来问一句"这版真的 ready 了吗?"。
取舍二:完整副本 vs 引用
订阅者接入你的策略之后,他拿到的是什么?
- 方案 A:引用。订阅者的工作区里只有一个指向你原版的 pointer,执行时从你那边读。
- 方案 B:完整副本。你发布那一刻的代码被完整复制进订阅者的工作区,之后独立存在。
我们选 B。
引用的好处是节省存储、同步方便;坏处是隔离极弱 —— 订阅者的 job 执行依赖你这边的状态,你删了一行代码、改了一个函数名、甚至你账号被暂时锁定,他那边就会崩。
完整副本带来的隔离属性比节省的那点存储重要得多。量化策略是真金白银在跑的东西,可预测性 > 一切。
取舍三:订阅者只读 vs 允许修改
订阅者拿到副本之后,能不能改?
- 方案 A:只读。副本是冻结的,订阅者不能动一行。
- 方案 B:允许修改。副本是订阅者自己工作区里的东西,他想怎么改怎么改。
我们选 B。
只读看起来更"安全"(防止订阅者乱改后出问题甩锅),但它堵死了一个最常见的合理需求 —— 局部调参。
订阅一个策略之后,用户最常做的一件事是什么?是把止损阈值从 5% 改成 3%,或者把选股范围从沪深 300 改成自己感兴趣的一篮子。这是用户在把作者的策略适配到自己的偏好,是订阅行为的自然延伸。
允许修改带来的副作用(比如订阅者改坏了)被我们用另一件事兜底:副本从你那里分出来的那一刻就是独立对象,订阅者怎么改都不会影响到原作者和其他订阅者。这就是下一个取舍。
取舍四:双向隔离
这是前三个取舍的自然推论,但值得单独强调:
- 原作者改原版 → 不影响订阅者的副本(因为有 pin)
- 订阅者改副本 → 不反向影响原版(因为是完整副本)
- 其他订阅者的副本互相之间 → 完全独立
这套双向隔离是整个发布订阅模型的地基。少了任何一条,整个系统就会有一类用户被另一类用户绑架。
四、退订的时候系统在做什么
还有一个细节值得单独讲一下,因为大部分平台做不干净。
订阅者不想用了,点退订。Privora 会做两件事:
- 把这份副本从订阅者工作区里彻底清理
- 但在清理之前,先检查:有没有 Job 正在跑这个策略?
如果有 —— 系统会先拦住你确认。理由很直接:你可能忘了你昨天晚上刚挂上去的调度。一个正在每天产生持仓调整的策略被静默删掉,对你账号的实际影响是真金白银级别的。
这个拦截看起来是个小细节,但它体现的是平台对"数据资产和运行中任务"的敬畏感。运行中的策略不是文件,是活物。
清理逻辑本身也是完整的:代码、配置、历史执行日志、关联的调度条目 —— 一次性清干净,不留孤儿数据。下次想再订阅同一个策略,重新拿一份干净副本就行。
五、订阅者路径:给不写代码的人
上面讲完了发布端的设计,下面讲消费端。
你没写过 Python,或者写过但不想为一个量化策略重新搭一套环境 —— 去 Marketplace 的策略 tab看看别人发布了什么。
点免费接入,完整副本进你的工作区。然后:
- 不用装 Python
- 不用装依赖
- 不用看懂代码
- 不用自己接数据源
进调度中心,给它排个期(日频、周频、月再平衡,随你),策略开始自动跑。指标、持仓、交易历史都在你自己账号里沉淀。
对订阅者来说,这个体验非常接近**"订阅一套每天自动帮你跑的量化策略"** —— 比订阅公众号多了一层:你拿到的不是观点,是真实在运行的代码。
六、两条路都在同一个账号下
这是我想强调的最后一点:发布者和订阅者不是两类用户,是同一个用户的两种身份。
你今天可以订阅别人的策略试水;明天觉得有点想法,开一个自己的流程开始写;后天觉得写得不错,发布出去给别人用 —— 三个身份之间的切换成本是零。
这个模型的核心取向是:让"写策略"和"用策略"之间的距离变短。以前这中间隔着"学 Python / 搭环境 / 接数据源 / 对接实盘"这些工程摩擦,现在这些摩擦都被平台层吸收掉了。
七、开始用
lg-data.cc 注册。个人和小团队免费。
根据你今天更想做哪件事:
- 想接入一个现成的策略看看效果 → Marketplace → 策略 tab → 免费接入 → 调度中心排期
- 想发布你已经跑了一段时间的策略 → 流程列表 → 云图标 → 发布
操作手册:lg-data.cc/user-guide ---
写在最后
这篇讲的是"策略怎么被发布和订阅"。下一篇我想讲另一件最近同时上线、但定位完全不同的事 ——
"你本地那堆 backtest_v12_final_FINAL_USE_THIS.pkl 文件,它们不该继续躺在你硬盘上。"
也就是回测结果的持久化、团队可见、以及两次点击做策略对比。如果你做量化研究超过半年,大概率踩过这个坑。下周见。