ccbot 与 clbot 量化机器人设计缺陷审计
本卡片根据对 ccbot(资金分析与飞书网关)及 clbot(Tradier 实盘对冲与行情引擎)的源码审计结果,梳理其中存在的严重计算缺陷、潜在运行漏洞,以及相对应的工程重构建议。
一、 严重逻辑与计算缺陷 (严重级别:高)
1. YTD 夏普比率(Sharpe Ratio)计算的时间序列错位
在 ccbot/backend/api_sidecar.py 的收益率对齐代码中:
ccbot_returns[d_next] = row_cur['daily_pnl'] / nav # nav = row_cur['total_value_cny']- 缺陷:使用
d_next(下一日时间戳)作为 Key,却使用row_cur当日的daily_pnl和nav(资产净值)。 - 物理后果:导致整个时间序列收益率无故向后错位一天。在与 QQQ 标的对齐进行超额回报(Alpha)和夏普比率计算时,会引入系统性偏差,输出失真的量化评价指标。
- 公式不严谨:收益率公式定义应为 。分母直接使用当天的
total_value_cny导致计算口径不一致。
2. 夏普计算未对“现金流”进行中性化调整
- 缺陷:如果
daily_pnl直接由“当日资产差额”得出,当账户发生外部出入金(如入金 1 万美元)时,差额会异常暴增,导致系统误判定当天产生了 的收益。 - 对策:在计算 daily_pnl 时,必须扣除当天的净流入/流出资金:
二、 运行环境与配置架构缺陷 (严重级别:中)
1. 机密环境变量泄漏风险
在 ccbot/.env 和 clbot/.env 的源码包中,发现了明文泄露的生产密钥:
TRADIER_ACCESS_TOKEN/TRADIER_TOKEN=L7AS9UZncE...[REDACTED]FEISHU_APP_ID=cli_aab...[REDACTED]FEISHU_APP_SECRET=DpU1Sud...[REDACTED]
- 隐患:密钥硬编码写入了代码包内的配置文件,一旦上传至 Git 或多人协作会造成严重越权和资金不安全。
- 对策:本地
.env必须加入.gitignore排除追踪,在生产环境中统一通过系统环境变量(Environment Variables)注入。
2. 双端进程端口抢占与 Docker 网络冲突
在 ccbot 架构中,前端 nginx 镜像和后端 api_sidecar.py 在 Docker 网卡映射时,未设置限流与隔离。
- 对策:统一使用 Compose 网络进行内部端口暴露(
expose),外网统一通过统一的反代网关进行转发,阻断数据库接口(SQLite/aiosqlite)在公网的暴露。
三、 实盘交易防线与只读安全策略
clbot 和 ccbot 对接了 Tradier 实盘。为了坚守**“仅拉取数据,绝对禁止执行实盘交易”**的安全红线,代码必须重构以实现只读化隔离:
[ 策略触发器 (clbot Engine) ]
│ (生成对冲/抄底信号)
▼
[ 交易拦截代理 (Broker Gate) ]
│
┌────────┴────────┐
▼ (只读数据) ▼ (写交易指令)
[ GET 行情端点 ] [ POST 订单端点 ]
│ (放行) │ (硬性断开 / Mock 返回)
▼ ▼
[Tradier API] [ ⚠️ 报错阻止:403 Forbidden ]
1. 物理移除所有的订单构建逻辑
- 彻底从代码中清理
post请求封装。 - 对
broker.py或api_sidecar.py进行硬化,只封装GET方法获取 quotes、chains 和 account balances。
2. 引入 Dry-Run 模拟沙箱
- 所有的
place_order操作均被 Mock。当生成信号时,直接在飞书通知中发送【模拟交易提示】而不向 Tradier API 发起任何订单写请求。
相关链接
- QQQ期权Gamma交易策略 交易信号生成与期权墙计算
- Debian系统安全加固与优化 VPS 服务器安全防护与端口管理
- Ollama探测拦截与CloudflareWorker优化 接口兼容性异常处理