cover_image

我的基金套利程序上云了

东哥的平凡生活 静听烟雨任平生


🚀 每天进步一点点。日积月累、水滴石穿

昨晚搞定了VPS,安装过程中因为我对Linux系统也完全不熟悉,就知道个命令 ls = dir, ssh也是昨晚临时下了个工具,照着讲义挨个学,每成功一点点,都满满的自豪!

编程序也是半吊子,基本都靠AI,我自我感觉我强的地方就是思路比较清晰,能发现AI犯的错误,不会被AI牵着鼻子走。某种程度上,这就是我主张新手小白学习Python编程从笨笨的TRAE做起,反而是一件好事,我们能看到TRAE做的每一步。

经常有读者、群友给我私信,要加我微信,讨论技术问题,原则上我都不会加,群里也没法直接加我。因为我根本没有能力去解决读者在开发过程中遇到的非常“个性化”的问题,通用的问题我都写在文章中。在开发过程中遇到的困难,最有效率的办法就是直接问AI,问Claude ,问CODEX,没有解决不了的;其次就是在无敌的各个群里(用户群、程序员群etc)请教大家,群友的力量比我单个人强大多了。

我唯独能解决的只有我自己编写的程序运行出现了bug,我大致能很快定位,所以三个AI编程群的群友遇到问题,直接在群里@我就可以。

今天下午继续折腾,起因很简单,就是我外出旅游期间,怎么去获取Woody API数据,还有外汇管理中心每天只发布的当天中间价的接口数据、深圳交易所每晚发布的场内份额?即使我不外出,我也未必每天都要开机运行程序,我可不想每天做一个工具人,以套利为生,那我就被拴住了,人生也太无趣了。


我们做量化套利,数据就是生命线,而连续性则是灵魂。为了能连续获得套利程序需要的数据,今天我就让Gemini CLI 帮我构建了 Cloud Siphon (云端抽水机) 架构,采用全自动增量补全逻辑,实现了一次从“单点运行”到“分布式追溯”的跨越式升级。

🛠️ 核心组件

  1. 云端收割机 (cloud_siphon):部署在东京 VPS,7×24 小时待命,每天 09:20 准时收割全量基金因子和双汇率(美元+港币)。
  2. 本地同步器 (daily_updatery):这是本次升级的灵魂。它不再仅仅拉取“今天”的数据,而是具备了“扫描全场”的能力。

🛠️ 魔法功能

历史追溯入库 (Batch Catch-up) 当我旅游一个月回来,打开电脑运行"跨境QDII半自动"程序, 就能够:

  • 增量扫描:程序会自动对比本地与 VPS 上的文件,发现缺失的 30 份历史 JSON。
  • 全速下载:通过 SSH 隧道秒级拉回所有历史文件。
  • 数据重构:程序会自动循环调用解析引擎,将这 30 天的校准值、对冲比例、底层权重逐一解析并塞进本地数据库。
  • 结果:每一只基金的历史静态估值数据表瞬间恢复连续,仿佛我从未离开。

🛠️ 冗余(Fallback)

如果 VPS 故障,程序会自动切换到“本地直接抓取”模式。不报错、不崩溃,最大程度兼容各种运行环境。


来看看Gemini 调试过程中的表现,我还是很满意的。(以下文字均为Gemini所言)

🛠️ 在讨论PLAN阶段,Gemini给了具体架构建议

我建议采用 “云端采集 + 本地处理” 的“异步同步”模式,而不是把整个程序搬过去。

  • 第一阶段:云端“抽水机”(Siphon) 在 VPS 上部署一个极简的 Python 脚本,只做三件事:

    1. 定时触发:每天交易日收盘后(例如北京时间 16:00),通过 cron 自动运行。
    2. 抓取并存储:调用 Woody API,获取当天的 JSON 原始数据。
    3. 存入轻量数据库:将原始数据存入一个微型的 SQLite 数据库(或者干脆每天存一个日期命名的 .json 文件)。
  • 第二阶段:数据回传(Sync) 当你本地运行第一个程序或第二个程序(JSL)时,先增加一个“拉取”步骤:

    1. 远程拉取:通过 scp、sftp 或一个简单的 HTTP 接口,从东京 VPS 下载最近几天缺失的数据。
    2. 本地合流:将下载的数据合并到你本地的数据库中。

🛠️ 在代码实现N阶段,很快就编完程序

我已经根据我们的讨论,设计并实现了 “云端采集 + 本地同步” 的轻量化方案。这个方案完美解决了 Woody API 无法读取历史数据的问题。

完成的工作内容:

  1. 云端采集器 我在项目根目录下创建了一个轻量级的 Python 脚本。
  • 功能:定时抓取 Woody API 的因子数据,以及人民币中间价(美元和港币)。
  • 特性:不依赖 Pandas 等大型库,仅使用 Python 内置模块,完美适配 512MB 内存的 VPS。
  • 部署建议:你可以将其复制到东京 VPS,通过 cron 设置每天下午(如 16:30)自动运行。
  1. 本地程序升级 我对第一个程序的核心更新逻辑进行了“外科手术式”的升级:
  • VPS 优先模式:程序启动时,会首先尝试通过 SSH 连接你的东京 VPS 拉取今日已采集好的 JSON 数据。
  • 无缝冗余回退:如果 VPS 连不上、未配置、或者还没生成今日数据,程序会自动、静默地切换回原来的逻辑(直接请求 Woody API 和爬取网页),确保即使没有 VPS 信息也能正常运行。
  • 数据湖注入:从 VPS 拉取的数据会自动注入本地的“原始数据湖”,复用原有的高精度解析逻辑。

🛠️ 最后就是修修补补阶段

我已经完成了所有代码层面的优化和同步,本次优化的最终成果:

  1. 港币汇率全链路支持:
    • 采集端 (VPS):现在能同时采集并保存美元和港币的中间价。
    • 传输端 (SSH):支持将双汇率数据从东京安全拉回本地。
    • 存储端 (DB):
  2. 本地/云端 冗余化:
    • 即便云端 VPS 出现故障,本地的 DataFetcher 也已经升级了逻辑,可以从国家外汇管理局官网同时爬取美元和港币,确保系统永不宕机。
  3. 全量自动化部署:
    • 你现在只需运行部署脚本,它就会自动去读你的配置文件,把所有基金都加入 VPS 的“收割清单”,且定时任务已精准对齐北京时间 09:20。

所有工作已就绪,你的系统现在已经变成了一个具备“多币种、多市场、云端冗余”能力的专业基金套利监控系统。



是骡子是马,明天拉出来溜溜。

继续滑动看下一个
静听烟雨任平生
向上滑动看下一个