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_pnlnav(资产净值)。
  • 物理后果:导致整个时间序列收益率无故向后错位一天。在与 QQQ 标的对齐进行超额回报(Alpha)和夏普比率计算时,会引入系统性偏差,输出失真的量化评价指标。
  • 公式不严谨:收益率公式定义应为 。分母直接使用当天的 total_value_cny 导致计算口径不一致。

2. 夏普计算未对“现金流”进行中性化调整

  • 缺陷:如果 daily_pnl 直接由“当日资产差额”得出,当账户发生外部出入金(如入金 1 万美元)时,差额会异常暴增,导致系统误判定当天产生了 的收益。
  • 对策:在计算 daily_pnl 时,必须扣除当天的净流入/流出资金:

二、 运行环境与配置架构缺陷 (严重级别:中)

1. 机密环境变量泄漏风险

ccbot/.envclbot/.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)在公网的暴露。

三、 实盘交易防线与只读安全策略

clbotccbot 对接了 Tradier 实盘。为了坚守**“仅拉取数据,绝对禁止执行实盘交易”**的安全红线,代码必须重构以实现只读化隔离:

[ 策略触发器 (clbot Engine) ]
            │ (生成对冲/抄底信号)
            ▼
   [ 交易拦截代理 (Broker Gate) ]
            │
   ┌────────┴────────┐
   ▼ (只读数据)       ▼ (写交易指令)
[ GET 行情端点 ]   [ POST 订单端点 ]
   │ (放行)           │ (硬性断开 / Mock 返回)
   ▼                  ▼
[Tradier API]      [ ⚠️ 报错阻止:403 Forbidden ]

1. 物理移除所有的订单构建逻辑

  • 彻底从代码中清理 post 请求封装。
  • broker.pyapi_sidecar.py 进行硬化,只封装 GET 方法获取 quotes、chains 和 account balances。

2. 引入 Dry-Run 模拟沙箱

  • 所有的 place_order 操作均被 Mock。当生成信号时,直接在飞书通知中发送 【模拟交易提示】 而不向 Tradier API 发起任何订单写请求。

相关链接