博客
三.Hyperstock 技术架构揭秘
阅读时间:12 分钟
整体架构
用户 → CDN → 前端(React) → API Gateway → 服务层 → 数据源 ↓ ↓
PostgreSQL
↓
Redis(缓存)
部署: AWS + 阿里云双活(海外用户走 AWS,国内用户走阿里云)
AI 模型选型
Score 评分模型
不是深度学习,是多因子加权模型。
为什么不用深度学习?
- 可解释性:用户问"为什么这个 Score 高",我能说清楚每个维度的权重
- 数据量:期权数据虽然多,但有效标注数据不够训练复杂模型
- 迭代速度:调整权重 5 分钟上线,重新训练模型 5 小时
- 稳定性:线性模型不会像神经网络那样突然发癫
型结构:
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 的独门绝技。大部分期权工具不做这个。
实现方式:
- 解析 CME SPAN 参数文件(每天更新)
- 针对个股期权简化计算(不是完整的期货组合 SPAN)
- 考虑标的价格波动、IV 变化、到期时间三个风险场景
- 输出预估保证金
与主流券商的误差:
| 券商 | 平均误差 | 95% 区间 |
|---|---|---|
| Interactive Brokers | 5-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 | 开源,可定制 |
| CDN | Cloudflare | 免费 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 都更高效。
