darkeril

Requirements v1.3.1

定稿日期:2026年2月24日
参与:露露(Claude Opus 4.6)、小周(GPT-5.3-Codex)、范总确认
状态:✅ 需求锁定,待开发
版本:v1.3.1(部署方案确认)


0. 文档定位

  • 文档类型:项目基石级 PRD + 技术需求定稿(用于研发、验收、后续商业化)
  • 优先级:安全性 > 可控性 > 稳定性 > 收益表现 > 开发速度
  • 约束前提:先需求锁定,再开发;先 API 全测通,再实盘;先 Dry Run 1 周,再 Real

1. 项目定义与商业化定位

  • 产品名:套利引擎(ArbitrageEngine,简称 AE)
  • 定位升级:从 v1.2 的"范总单用户工具"升级为"可商业化产品雏形"
    • Phase 1:服务范总实盘验证(单用户形态)
    • 但架构上 Day1 预埋多租户和计费能力,避免二次重构
  • 核心价值主张
    • 对用户:低门槛执行资金费率套利(PM + 风控 + 可视化)
    • 对团队:沉淀可复制交易基础设施,具备对外 SaaS 化能力
  • 竞争差异化
    • 完整前端(非CLI黑框)
    • 安全第一(TOTP、审计、熔断)
    • Dry Run验证(降低用户心理门槛)
    • PM优化(资金效率提升)
    • 自定义风控(非黑盒)

2. 目标与边界

目标(Phase 1)

  • Binance 上完成 BTC/ETH 对冲套利闭环
  • 支持 PM 模式,执行"开/平人工确认,中间自动运行"
  • 全链路审计、风控、告警、报表可用

非目标(Phase 1 不做)

  • 不做多交易所聚合
  • 不做自动择时开平仓
  • 不做资金托管与代客资管
  • 不做公开注册与支付计费(仅预埋)

3. 已确认业务决策(锁定)

项目确认结果
执行模式C — 开仓/平仓需人工确认,持仓期间自动化
初始实盘资金$500(BTC $250 + ETH $250)
收益处理留账户复利,不自动提取
部署服务器小周服务器 34.84.9.167(GCP东京,Binance延迟11ms)
上线节奏Phase 0 API测通 → Dry Run 1周 → Real 2个月
费率为负完全不动(A方案)

4. 系统状态机

模式状态

DRY_RUN ──(Phase 0 checklist 100%通过 + 范总确认)──→ REAL
REAL ──(手动降级)──→ DRY_RUN

交易生命周期

IDLE ──(用户点"开始执行"+二次确认)──→ OPENING
OPENING ──(双腿成交+偏差≤1%)──→ HOLDING
OPENING ──(单边失败+补偿失败/超时/API连续失败)──→ HALTED
HOLDING ──(用户点"平仓"+确认)──→ CLOSING
HOLDING ──(uniMMR<1.25)──→ HALTED(不自动平仓,禁止新操作,立即告警)
CLOSING ──(双腿平完+仓位归零)──→ IDLE
任意状态 ──(硬风控触发/关键系统异常)──→ HALTED
HALTED ──(范总手动恢复)──→ IDLE

5. 风控参数(硬编码,不可前端修改)

参数说明
最大单次名义$600$500本金+20%缓冲
最大滑点0.10%超过取消下单
最大对冲偏差1.00%|spot-perp|/target
最大杠杆1x不可修改
uniMMR预警线1.35告警
uniMMR危险线1.25自动HALTED
API失败熔断连续5次进入HALTED
单腿超时(补单)8s触发补单逻辑
单腿超时(熔断)30s触发HALTED
时钟漂移阈值>1000ms禁止交易请求

6. Dry Run 对照机制

Dry Run 期间必须记录"拟交易账本":

  • 拟下单价格、拟成交数量、拟手续费、拟持仓
  • 拟资金费率收入(按实际市场费率与拟仓位估算)

产出对照报告

  • 如果 Real 执行,理论会得到的收益区间
  • 引擎计算准确性与一致性验证

通过标准:Dry Run 1周内无关键错配、无状态机死锁、无风险漏报


7. 功能模块清单(Phase 1)

认证与安全

  • 账号密码 + TOTP(Google Authenticator)
  • 会话超时(30分钟)
  • 连续登录失败锁定(5次失败后锁定15分钟)
  • 审计日志全记录(append-only)

Binance 接入

  • API权限自检(Read/Trade only,禁Withdraw)
  • 行情、费率、账户、持仓、下单、回查
  • 连接状态实时监控(心跳检测)
  • API调用频率控制(避免触发限流)

执行引擎

  • REST并发下单(现货买入 + 永续做空同时发出)
  • WebSocket订阅成交回报、仓位变化
  • 单边失败补偿、对冲偏差修复、熔断
  • 下单前检查:余额、价格、滑点预估

监控告警

  • uniMMR、对冲偏差、当前/预测费率、累计收益
  • Discord实时告警 + 每日自动汇报
  • 双通道告警预留(Discord + 邮件/短信)

报表

  • 8小时/日/周/月收益统计
  • 手续费统计、资金费率贡献
  • 净值曲线图表
  • Dry Run对照报告

运维

  • PM2健康检查、自动拉起
  • 重启后自动对账恢复
  • 分api/worker进程

8. 多租户架构预埋(v1.3核心新增)

数据模型要求

  • 所有核心业务表强制包含 user_id(或 tenant_id

执行隔离要求

  • Worker任务必须携带 user_id 上下文
  • 严禁跨用户读取订单、仓位、密钥、日志

密钥管理

  • 按用户分区加密存储(每用户独立密钥上下文)
  • 主密钥与业务库分离,密钥不落盘

权限模型预留

  • 用户表保留 role 字段(RBAC扩展位)
  • 前端不写死"唯一管理员"

审计不可篡改

  • 审计日志 append-only,禁止更新/删除业务接口
  • 仅允许归档,不允许逻辑改写
  • 预留哈希链字段(后续可选)

9. Binance API 接口清单

认证与账户(Phase 0 必测)

接口用途
GET /api/v3/accountSpot账户资产、权限
GET /fapi/v2/accountFutures账户信息
GET /fapi/v2/balanceFutures余额
GET /fapi/v2/positionRisk永续持仓风险
GET /fapi/v1/leverageBracket杠杆/名义分档
GET /sapi/v1/portfolio/accountPM账户信息

行情与费率

接口用途
GET /api/v3/ticker/bookTickerSpot最优买卖价
GET /fapi/v1/ticker/bookTickerPerp最优买卖价
GET /fapi/v1/premiumIndex标记价格+当前/预测费率
GET /fapi/v1/fundingRate历史费率
GET /api/v3/depthSpot深度(滑点估算)
GET /fapi/v1/depthPerp深度(滑点估算)

交易执行

接口用途
POST /api/v3/orderSpot下单(市价/限价)
GET /api/v3/orderSpot订单回查
DELETE /api/v3/orderSpot撤单
POST /fapi/v1/orderFutures下单(开空/平空)
GET /fapi/v1/orderFutures订单回查
DELETE /fapi/v1/orderFutures撤单
GET /fapi/v1/openOrders未完成单查询
WebSocket listenKey成交回报+仓位变化

资金与收益

接口用途
GET /fapi/v1/income资金费率收入、手续费、盈亏
GET /fapi/v2/positionRisk未实现PnL、保证金风险

10. 前端页面清单

/login

  • 用户名/密码 + TOTP输入
  • 登录审计记录

/dashboard

  • 当前模式(Dry Run / Real)+ 状态机状态
  • BTC/ETH仓位卡片:持仓量、对冲偏差、当前/预测费率
  • uniMMR + 风险灯(🟢 >1.35 / 🟡 1.25-1.35 / 🔴 <1.25)
  • 当日收益、累计收益、手续费
  • 净值收益曲线图

/execute

  • 参数展示(只读):BTC $250 / ETH $250
  • 「开始执行(开仓)」按钮(二次确认弹窗)
  • 「请求平仓」按钮(二次确认弹窗)
  • 执行过程实时日志流(SSE)

/risk

  • 风控阈值参数表(只读展示)
  • 告警历史列表
  • 熔断记录 + 恢复操作按钮

/records

  • 订单记录(Spot/Futures,可筛选)
  • 费率收入记录(8h维度,可按日/周/月汇总)
  • 审计日志(全操作记录)

/settings

  • API Key配置(加密存储,显示为***)
  • Discord Webhook配置
  • 模式切换(Dry Run ↔ Real,需二次确认)

11. 数据库结构(PostgreSQL,v1.3)

-- 用户(多租户预埋)
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(64) UNIQUE NOT NULL,
  password_hash VARCHAR(256) NOT NULL,
  totp_secret_enc VARCHAR(256) NOT NULL,
  role VARCHAR(16) DEFAULT 'admin', -- RBAC预留
  status VARCHAR(16) DEFAULT 'active',
  created_at TIMESTAMPTZ DEFAULT NOW(),
  last_login_at TIMESTAMPTZ
);

-- API凭据(按用户分区)
CREATE TABLE api_credentials (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  account_name VARCHAR(64),
  api_key_enc TEXT NOT NULL,
  api_secret_enc TEXT NOT NULL,
  perm_read BOOLEAN DEFAULT true,
  perm_trade BOOLEAN DEFAULT true,
  perm_withdraw BOOLEAN DEFAULT false,
  ip_whitelist_ok BOOLEAN DEFAULT false,
  pm_enabled BOOLEAN DEFAULT false,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- 策略实例
CREATE TABLE strategy_instances (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  mode VARCHAR(16) NOT NULL, -- DRY_RUN / REAL
  state VARCHAR(16) NOT NULL, -- IDLE / OPENING / HOLDING / CLOSING / HALTED
  base_capital DECIMAL(18,2),
  btc_alloc DECIMAL(18,2),
  eth_alloc DECIMAL(18,2),
  started_at TIMESTAMPTZ,
  closed_at TIMESTAMPTZ
);

-- 订单
CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  strategy_id INT REFERENCES strategy_instances(id),
  venue VARCHAR(8) NOT NULL, -- SPOT / FUTURES
  symbol VARCHAR(16) NOT NULL,
  side VARCHAR(8) NOT NULL,
  type VARCHAR(16) NOT NULL,
  client_order_id VARCHAR(64),
  exchange_order_id VARCHAR(64),
  price DECIMAL(18,8),
  orig_qty DECIMAL(18,8),
  executed_qty DECIMAL(18,8),
  status VARCHAR(16),
  is_reduce_only BOOLEAN DEFAULT false,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- 仓位快照
CREATE TABLE positions_snapshot (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  strategy_id INT REFERENCES strategy_instances(id),
  symbol VARCHAR(16) NOT NULL,
  spot_qty DECIMAL(18,8),
  futures_qty DECIMAL(18,8),
  spot_notional DECIMAL(18,2),
  futures_notional DECIMAL(18,2),
  hedge_deviation DECIMAL(8,4),
  mark_price DECIMAL(18,2),
  captured_at TIMESTAMPTZ DEFAULT NOW()
);

-- 资金费率收入
CREATE TABLE funding_income (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  symbol VARCHAR(16) NOT NULL,
  funding_time TIMESTAMPTZ NOT NULL,
  income_asset VARCHAR(8),
  income_amount DECIMAL(18,8),
  rate DECIMAL(18,8),
  position_notional DECIMAL(18,2),
  source_tx_id VARCHAR(64)
);

-- 风控事件
CREATE TABLE risk_events (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  strategy_id INT REFERENCES strategy_instances(id),
  event_type VARCHAR(32) NOT NULL,
  severity VARCHAR(16) NOT NULL,
  metric_value DECIMAL(18,8),
  threshold_value DECIMAL(18,8),
  action_taken VARCHAR(64),
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 审计日志(append-only,不可删改)
CREATE TABLE audit_logs (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id),
  actor VARCHAR(64) NOT NULL,
  action VARCHAR(64) NOT NULL,
  target VARCHAR(128),
  payload_json JSONB,
  ip VARCHAR(64),
  hash_chain VARCHAR(128), -- 预留哈希链字段
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- 系统运行记录
CREATE TABLE system_runs (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id) NOT NULL,
  mode VARCHAR(16) NOT NULL,
  start_at TIMESTAMPTZ NOT NULL,
  end_at TIMESTAMPTZ,
  result VARCHAR(16),
  notes TEXT
);

12. 三阶段产品路线图

阶段目标交付预计周期
Phase 1范总$500跑通2个月单用户验证版(含风控+审计+告警+报表)开发2-3周 + 实盘2月
Phase 2开放小规模内测注册体系+RBAC+订阅计费+运维扩容2-4周
Phase 3公开获客规模化营销站点+渠道投放+客户成功+合规增强持续

13. Phase 2 新增模块预览

账户体系

  • 注册、邮箱验证、找回密码、设备管理、2FA强制策略

RBAC权限

  • Owner / Admin / Operator / Viewer 角色与资源权限矩阵

订阅计费

  • 套餐分层、试用期、续费、到期降级、账单与发票记录

多租户运维

  • 队列隔离、限流配额、租户级熔断、租户级监控面板

客服与支持

  • 工单、系统公告、状态页

14. 商业模式设计

方案A:SaaS订阅制(推荐先做)

  • 参考定价:$29 / $59 / $99 月费分层(按功能与账户规模)
  • 优势:合规压力相对低、收入稳定、扩展快
  • 用户资金在自己Binance账户,平台不碰钱

方案B:收益分成制(后评估)

  • 管理费(1-2%/年)+ 超额收益分成(20%)
  • 风险:合规、牌照、托管责任显著上升

建议路径

  • 先SaaS,再评估收益分成
  • 不在Phase 1/2落地资管模式

15. 技术选型(锁定)

技术说明
执行层自建引擎不fork Hummingbot
API层Binance官方SDK@binance/connector
后端Node.js + Express和灵镜统一
前端Next.js深色UI
数据库PostgreSQL多租户友好
进程管理PM2分api/worker
部署34.84.9.167 (GCP东京)Binance延迟11ms

15.1 部署与网络安全方案(v1.3.1 新增)

部署服务器

  • 机器:34.84.9.167(GCP asia-northeast1-b)
  • 选择理由
    • Binance API TCP延迟 11ms(露露服务器22ms的一半)
    • 内存可用 6.4GB、磁盘可用 187GB
    • 仅1个PM2服务运行,负载极低
    • GCP基础设施安全性高于普通VPS
    • 非root用户运行(fzq1228)

网络访问方案(域名 + HTTPS + 强认证)

  • 访问方式:子域名 + Caddy自动HTTPS
  • 不使用IP白名单(范总IP不固定)
  • 安全靠认证层保障
安全层措施
传输层HTTPS(Caddy自动TLS证书)
认证层账号密码 + TOTP双因素
会话层30分钟超时自动登出
防暴破连续5次登录失败锁定15分钟
审计层所有登录/操作记录,append-only
数据库PostgreSQL仅监听localhost
进程隔离单独系统用户运行套利引擎

GCP防火墙规则(需配置)

  • 开放端口:仅HTTPS(443)
  • 其他端口:全部关闭
  • SSH:仅密钥登录

Phase 2 安全升级路径

  • 可选:Cloudflare Zero Trust(Tunnel + Access认证)
  • 可选:WAF规则(防SQL注入/XSS)
  • 可选:Cloudflare Access策略(邮箱OTP二次验证)

16. Phase 0 验收Checklist

认证与权限

  • API签名请求成功
  • 读取余额成功
  • 读取持仓成功
  • 验证无提现权限
  • PM状态可读

行情与费率

  • Spot/Perp bookTicker可读
  • premiumIndex可读
  • fundingRate历史可拉取(BTC/ETH)
  • 深度数据可拉取

交易闭环

  • Spot下单/回查/撤单成功
  • Futures下单/回查/撤单成功
  • WebSocket成交推送正常
  • 单腿失败补偿流程演练通过
  • 熔断触发与恢复流程通过

风控机制

  • 滑点超阈拦截通过
  • 对冲偏差超阈拦截通过
  • API连续失败熔断通过
  • 重启后自动对账通过
  • uniMMR预警/危险触发通过

报表与告警

  • 8小时收益计算正确
  • 每日汇报自动推送成功
  • 异常告警实时送达成功

验收标准:Checklist 100%通过才允许进入 1周 Dry Run。


17. 风险与原则

  • 原则:真金白银系统,宁慢勿错
  • 风险优先级:执行错误 > 权限泄露 > 可用性 > 收益偏差
  • 处置原则:触发风险先停机后恢复,先对账后继续

18. 下一步(文档后动作)

  1. 独立服务器准备完成
  2. API Key权限配置完成(Read+Trade,禁Withdraw,白名单)
  3. Phase 0执行计划与验收人确认
  4. 开始开发

On this page