HyperStock.net 标志
金库
注册领取7天免费使用
注册领取7天免费使用
博客

三.Hyperstock 技术架构揭秘

阅读时间:12 分钟

整体架构

用户 → CDN → 前端(React) → API Gateway → 服务层 → 数据源 ↓ ↓

PostgreSQL

Redis(缓存)

部署: AWS + 阿里云双活(海外用户走 AWS,国内用户走阿里云)


AI 模型选型

Score 评分模型

不是深度学习,是多因子加权模型。

为什么不用深度学习?

  1. 可解释性:用户问"为什么这个 Score 高",我能说清楚每个维度的权重
  2. 数据量:期权数据虽然多,但有效标注数据不够训练复杂模型
  3. 迭代速度:调整权重 5 分钟上线,重新训练模型 5 小时
  4. 稳定性:线性模型不会像神经网络那样突然发癫

型结构:

Score = w1×年化收益_score + w2×行权概率_score +w3×保证金效率_score + w4×波动率_score + w5×时间衰减_score 其中 w1=w2=0.25, w3=w4=0.20, w5=0.10

每个维度的 score 是分段线性函数,不是简单线性,考虑了实际交易中的非线性特征。

未来可能引入:

  • 机器学习辅助调参(自动优化权重)
  • 用户行为反馈闭环(哪些推荐用户实际用了,反馈到模型)

数据源

期权实时数据:

数据项来源延迟
期权链报价OPRA(期权报价局)< 5秒
标的价格Polygon.io< 1秒
历史数据自研数据库实时

为什么选择 OPRA:

  • 美国期权市场官方数据源
  • 覆盖全市场(NASDAQ / NYSE / AMEX)
  • 包括 Greeks、IV、成交量等完整字段

数据处理流程:

OPRA 实时流 → 数据清洗 → 异常检测 → 存储 → API 响应

异常数据告警(如价格跳变 > 50%)

SPAN 保证金计算

这是 Hyperstock 的独门绝技。大部分期权工具不做这个。

实现方式:

  1. 解析 CME SPAN 参数文件(每天更新)
  2. 针对个股期权简化计算(不是完整的期货组合 SPAN)
  3. 考虑标的价格波动、IV 变化、到期时间三个风险场景
  4. 输出预估保证金

与主流券商的误差:

券商平均误差95% 区间
Interactive Brokers5-8%±12%
老虎证券8-12%±18%
富途10-15%±22%

为什么有误差:

  • 不同券商在 SPAN 基础上加不同的缓冲
  • 持仓组合有净保证金效应(我们只算单合约)
  • 极端行情下券商可能临时上调保证金

性能优化

目标:3 秒内出结果

优化手段:

优化点手段效果
数据库查询期权链预加载到内存查询从 2s → 50ms
Greeks 计算缓存 + 增量更新计算从 1.5s → 200ms
SPAN 计算预计算常见场景计算从 800ms → 100ms
API 响应Redis 缓存热点标的命中时 < 50ms
前端渲染虚拟列表 + 懒加载首屏 < 1s

实际表现:

  • P50 响应时间:1.2s
  • P95 响应时间:2.8s
  • P99 响应时间:4.1s(极少数复杂标的)

瓶颈: 多标的批量分析(10 只同时)时,计算时间线性增长。下一步优化:并行计算。

安全与合规

数据安全:

  • 传输:全站 HTTPS,TLS 1.3
  • 存储:PostgreSQL AES-256 加密
  • 密码:bcrypt 哈希,盐值随机
  • API Key:JWT + 过期机制

服务安全:

  • DDoS 防护:Cloudflare
  • WAF:自定义规则过滤恶意请求
  • 限流:按 API Key 限流,防刷

合规:

  • 不存储用户交易数据(只在券商下单)
  • 不收集敏感个人信息
  • 风险提示覆盖全站关键页面
  • 免责声明用户注册时必须确认

技术栈总结

层面技术选型原因
前端React + TypeScript + Tailwind类型安全,开发效率
后端Node.js + Express生态丰富,IO 密集场景表现好
数据库PostgreSQL 14稳定,复杂查询支持好
缓存Redis 7热点数据缓存,会话存储
消息队列暂无(计划引入 RabbitMQ)异步任务处理
部署Docker + AWS ECS容器化,弹性伸缩
监控Prometheus + Grafana开源,可定制
CDNCloudflare免费 tier 够用,DDoS 防护

怎么维护

自动化。

  • CI/CD:GitHub Actions,push 即部署
  • 监控告警:Prometheus 异常自动发邮件到手机
  • 数据更新:定时任务,每天自动拉取 SPAN 参数
  • 备份:PostgreSQL 自动备份到 S3,保留 30 天
  • 客服:70% 问题在帮助中心有答案,剩下 30% 邮件和通讯工具回复

每周时间分配:

事项时间
新功能开发40%
Bug 修复20%
用户反馈处理15%
数据分析/优化15%
写作(博客/教程)10%

有技术问题想聊?hyperstock.werich@gmail.com

博客全部系列完结

感谢阅读。从入门到进阶,从数据到幕后,希望这些内容对你有帮助。

回到博客首页 →

Hyperstock.net — 用 AI 让每一次 Sell Put 都更高效。