clbot 对冲策略系统配置与运维
clbot 是运行于后台的量化策略(Titan)与异动风控守护进程。通过监控 VIX、VXN 隐含波动率以及 QQQ 均线,实施阶梯式跌幅风控,并向飞书发送异动警报卡片,同时接收用户的按钮反馈执行仓位平仓或展期。
一、 项目目录结构 (Directory Tree)
clbot/
├── core/ # 核心业务引擎 (Domain/Logic)
│ ├── __init__.py # 包识别文件
│ ├── engine.py # 主交易策略与生命周期
│ ├── market.py # 市场数据中心与指标计算
│ └── broker.py # 底层交易网关
├── infrastructure/ # 基础架构与基础设施 (Infrastructure)
│ ├── __init__.py # 包识别文件
│ ├── db.py # SQLite 数据库与持久化仓储层
│ ├── config.py # 统一配置管理与防脱敏安全模块
│ └── feishu/ # 飞书交互模块包 (MVC 分层)
│ ├── __init__.py # 暴露入口 (无缝对接 engine.py 和 main.py)
│ ├── cards.py # 视图层 (View):表单卡片 JSON 构建与排版
│ ├── handlers.py # 控制层 (Controller):指令路由与业务桥接
│ └── client.py # 基建层 (Client):WebSocket通信与 IO 队列
├── data/ # 持久化挂载目录 (Docker Volume)
│ ├── clbot.db # SQLite 数据库文件 (WAL 模式伴生文件在此生成)
│ ├── clbot_state.json # 状态缓存
│ ├── .fs_offset # 飞书消息游标或 Token 缓存
│ └── .notifier_dlq.jsonl # 发信失败的死信队列容灾文件
├── logs/ # 日志持久化目录 (Docker Volume)
│ └── clbot.log
├── deploy/ # 部署链路配置
│ ├── Dockerfile
│ └── docker-compose.yml
├── .env.example # 环境变量契约模板
├── requirements.txt # Python 依赖清单
└── main.py # 主守护进程入口二、 系统配置参数矩阵 (.env 契约)
项目根目录下的 .env 配置文件参数详解:
| 配置键名 | 参数类型 | 默认值 / 推荐值 | 作用与物理边界 |
|---|---|---|---|
FEISHU_USER_ID | ID | [REDACTED] | 用户的个人飞书 Open ID(ou_ 前缀),接收异动警报与表单指令交互。 |
FEISHU_GROUP_ID | ID | [REDACTED] | 用于接收盘后估值日报的群组 ID(oc_ 前缀)。 |
TRADIER_ACCOUNT_ID | 账户 | [REDACTED] | Tradier 资金账户账号。 |
TRADIER_PAPER | 布尔 | false | 是否为模拟盘。必须在只读模式下设为 false 并剥离写接口。 |
MAINTENANCE_ACTIVE | 布尔 | false | 账户防休眠自动保号功能开关。必须设为 false 以防资金损耗。 |
MAINTENANCE_SYMBOL | 股票 | NOK | 保号交易买卖的标的代码。 |
MAINTENANCE_QTY | 股数 | 1 | 每次保号买卖的股票数量(限 1 股)。 |
REPORT_TIME | 时间 | 07:30 | 触发美股盘后估值日报的北京时间。 |
SQLITE_DB | 路径 | data/clbot.db | 持久化数据库路径(建议使用 WAL 模式防死锁)。 |
三、 config.py 核心参数矩阵与物理意义
在系统核心配置中心 clbot/infrastructure/config.py 中,各项全局参数作用梳理如下:
1. 🔑 核心密钥与账户安全参数
TRADIER_TOKEN:Tradier API 生产环境的 Bearer 行情与交易鉴权密钥,决定底层 HTTP 会话是否处于激活状态(tradier_active)。TRADIER_ACCOUNT_ID:你的 8 位 Tradier 资金账户号码,用于路由仓位和下单网关(broker.py)。TRADIER_PAPER:布尔值(true/false),定义是否连接模拟盘(Paper Trading)沙箱。FEISHU_APP_ID/FEISHU_APP_SECRET:飞书开放平台自建应用的凭证,控制 WebSocket 接收事件与消息卡片的主通信鉴权。
2. 📈 市场基准与数据调度参数
MARKET.TIMEOUT:设置 API 网络请求超时强熔断秒数(默认15秒),防止单次握手卡死拖垮主轮询。MARKET.VIX_SYMBOL:标的波动率指数代码(默认^VIX),用于评估全市场宏观避险水位。MARKET.BENCHMARK_SYMBOL:策略盯盘的现货基准符号(默认QQQ),决定所有的跌幅监控、均线及历史波动率(HV)计算的数据源。
3. 🛡️ 账户保号活跃交易参数 (防休眠)
MAINTENANCE_ACTIVE:防账户休眠被收费的自动交易开关。MAINTENANCE_TRADING_DAYS:设定在每个月的哪些天执行保号交易(默认每月1,15号)。MAINTENANCE_SYMBOL:用于保号交易的股票标的(默认低价股NOK诺基亚)。MAINTENANCE_QTY:每次保号自动买入/卖出的股数(默认限制为最小的1股)。
4. 🛎️ 消息通信与指令调度参数
FEISHU_USER_ID:接收异动告警与交互卡片(平仓、展期按钮回执)的个人 Open ID。FEISHU_GROUP_ID:接收盘后估值日报的群组 ID。REPORT_TIME:盘后触发多账户 Dietz 财务核算并发送估值日报的时间(已更新为美东盘后17:30,约北京时间次日清晨 05:30 CST)。CMD_COOLDOWN:飞书命令交互冷却防刷时延(默认2.0秒),防止高频点击按钮导致并发竞态。
5. 🌊 市场波动率与情绪阶段参数
VIX_STAGES:定义了 6 个波动率级别范围(0-20 常态期,20-25 观察期,25-30 介入期,30-40 击球区,40-50 贪婪区,50-999 黄金坑),提供宏观风控评定。VOL_STAGES.VXN:针对纳斯达克 100 波动率指数(VXN)定义的 5 阶情绪分类(Tier 1 极度低波 到 Tier 5 极值安全线),用于警报卡片的可视化标注。VOL_STAGES.HV/HV_252:针对 20 日和 252 日历史波动率定义的平静/正常/剧烈偏离状态。
6. 🧠 Titan 策略与风控决策参数
TITAN.LEVERAGE:策略最高使用的杠杆上限倍数(默认4.0倍)。TITAN.DROP_TRIGGER:触发急跌警报的阈值比例(默认-0.01,即日内跌幅达 1% 时警报)。TITAN.RSI_OVERSOLD:RSI 强力超卖警报阀值(默认小于35)。TITAN.MA_BULL:牛熊判断的长线均线周期(默认200日均线)。TITAN.STOP_LOSS_MA:止损参考的均线(默认MA100,收盘破位触发止损提示)。TITAN.ROLL_DEFENSE_DTE:时间防守移仓天数阀值(默认180天,当 LEAPS 期权剩余天数小于该值时,自动触发移仓提示以避开时间衰减加速区)。TITAN.DELTA_ROLL_THRESHOLD:深度实值移仓 Delta 阈值(默认0.90,达到此值意味着期权已丧失杠杆,需要向上展期)。TITAN.STOP_LOSS_HARD:权利金账户最高硬止损线(默认-0.50,亏损 50% 自动止损)。TITAN.TRAILING_ACTIVATE与TRAILING_CALLBACK:追踪止盈的激活线(利润达 60% 激活)与最大回撤幅度(回吐最高利润的 25% 止盈出局)。TITAN.ROLL_PROFIT_FAST/MID/SLOW:期权针对时间与收益率交叉网格的“多维止盈策略”参数(例如:持仓大于 180 天且盈利率达到 10% 自动建议慢速止盈,防止时间价值彻底耗尽)。
四、 部署与运行指令 (Docker Compose)
1. 物理目录与 WAL 持久化规范
在容器编排中,绝对不要单文件挂载 clbot.db,必须挂载其所在的整个父目录(../data:/root/clbot/data)。
- 原因:SQLite 开启 WAL(Write-Ahead Log)模式时,会在同级目录下生成
-wal和-shm临时伴生文件,如果只挂载 db 单文件,伴生文件无法映射回宿主机,会导致容器重启时发生数据截断损坏。
2. 部署启动与构建
cd /root/HermesAgent/clbot/deploy
# 停止并移除容器
docker compose down
# 重新构建并拉起守护进程
docker compose up -d --build3. 运维监控常用命令
# 实时追踪策略运行日志
docker logs -f clbot
# 查看最后 50 行报错和 Tick 记录
docker logs --tail 50 clbot4. 容器内测试与网络诊断
当怀疑 VPS 的 DNS 发生故障或连接被阻断时,直接向容器注入测试脚本:
# 1. 复制测试脚本到运行容器内
docker cp ../test_diagnostics.py clbot:/root/clbot/
# 2. 在容器内部执行诊断
docker exec -it clbot python test_diagnostics.py三、 实盘交易硬性“物理熔断”安全策略
为了严格防范 clbot 执行任何买入/卖出下单操作(坚守只读红线),建议在 core/broker.py 模块中执行以下“物理阻断”:
# 核心修改:在 _execute_order_leg( L259 ) 入口处直接熔断
async def _execute_order_leg(self, symbol, side, price, qty, order_type="limit"):
# 物理防线:硬性拒绝所有的 POST 下单调用
logger.critical(f"⚠️ [安全警报] 拦截到非授权交易请求: {side} {qty}股 {symbol}")
return False, "FORBIDDEN_READONLY_MODE", 0这能确保即便在上层策略或自动保号(Maintenance)配置被意外激活时,交易网关也能在最底层直接封死交易请求,绝对保障资金安全。
相关链接
- ccbot资金报表系统配置与运维 财务报表及 Web 前端项目运维
- Debian系统安全加固与优化 服务器 UFW 网络端口与安全限制