文章内容

2026/4/1 18:50:10,作 者: 黄兵

Weights & Biases (W&B) 工具介绍

Weights & Biases (简称 W&B 或 wandb) 就像是给你的量化交易程序装上了一个“飞行数据记录仪(黑匣子)”加“云端可视化仪表盘”

它最初是为深度学习算法工程师设计的,用来记录模型训练的成百上千个参数和结果。但因为它极其强大的“参数记录”和“时间序列数据可视化”能力,现在被大量顶尖的量化团队用来追踪回测和实盘实验

1. W&B 在你当前项目中的核心作用

在你当前的 AI 加密货币量化项目中,你面临的核心痛点是:参数多(扫描频率、阈值)、指标复杂(Token 消耗、胜率、滑点)、测试周期长且容易遗忘版本差异。W&B 完美解决这些问题:

  • 可视化 Token 与收益的“性价比”:你可以把每次 AI 唤醒消耗的 Token 数量和当前账户权益(Equity)一起推送到 W&B。网页端会自动画出折线图,让你直观看到“降频到 15 分钟”后,资金曲线是否依然平滑,Token 消耗曲线是否显著下降。

  • 自动绑定 Git Commit:这是最神奇的功能。只要你在运行 Python 脚本的环境里初始化了 W&B,它会自动抓取当前的 Git Commit ID 和未提交的代码差异(Diff)。你在网页上看图表时,点击一下就能知道这张图对应的确切代码版本,完美解决“不知道回滚到哪里”的问题。

  • 参数配置台(Config):你可以把 min_ai_call_interval_sec、MA 斜率阈值、RSI 极值等写进 W&B 的 Config 里。每次跑完,网页上会自动生成一个表格,对比不同参数组合下的最终收益率。

2. 工作流升级:Markdown + W&B

引入 W&B 后,你的实验记录将变得极其严谨:

  • EXPERIMENT_LOG.md:记录**“主观意图”**(我为什么要把空仓扫描改为 15 分钟,我预期的风险是什么)。

  • W&B 看板:记录**“客观数据”**(跑了 7 天,画出了 100 张图表,最终结果是多少)。

pip install wandb
wandb login

运行 login 后,它会提示你打开浏览器注册一个免费账号,并提供一个 API Key 粘贴回终端。

第二步:在 main.py 中初始化配置

在你的程序入口处(比如 main.py 开始运行量化循环之前),定义这次实验的“变量”:

import wandb

# 初始化 W&B 实验
wandb.init(
    project="crypto-ai-quant",      # 项目大类名称
    name="Exp-0401-ScanOptimization", # 具体的实验名称(建议和 EXPERIMENT_LOG 对应)
    tags=["15min-scan", "AI-pruning", "OKX"], # 标签,方便以后按标签搜索
    config={
        "empty_scan_interval": 900,       # 空仓扫描间隔 (秒)
        "hold_scan_interval": 60,         # 持仓扫描间隔 (秒)
        "use_reversal_risk_pruning": True, # 是否启用剪枝逻辑
        "ai_model": "codex",              # 使用的 AI 模型
    }
)

第三步:在 PureAIReasoningStrategy 中记录数据

在你的量化主循环中(比如每次 K 线更新,或者 AI 执行完一次决策后),使用 wandb.log() 推送你想观察的指标:

class PureAIReasoningStrategy:
    # ... 其他逻辑 ...

    def process_tick(self, current_data):
        # 你的原有逻辑:判断是否触发 AI
        reversal_risk = self._has_reversal_risk(current_data)
        ai_triggered = False
        tokens_used = 0
        
        if reversal_risk:
            # 唤醒 AI 的逻辑...
            ai_triggered = True
            tokens_used = self.call_ai_and_get_tokens() # 假设你有一个获取消耗的方法

        # 计算当前账户总资产或盈亏
        current_equity = self.get_account_equity()

        # 【核心步骤】将数据打点推送到 W&B 云端
        wandb.log({
            "Account/Total Equity": current_equity,      # 资金曲线
            "AI/Tokens Used This Step": tokens_used,     # 单词 Token 消耗
            "AI/Trigger Count": 1 if ai_triggered else 0,# 触发次数 (图表上可看密集度)
            "Market/Current Price": current_data.price   # 行情对照
        })

第四步:结束实验(可选)

如果是实盘 7x24 小时运行,不用管它;如果是跑历史数据的回测,在回测结束时加上:

wandb.finish()

4. 运行后的效果

当你运行修改后的代码时,终端会打印出一个 W&B 的网页链接。点击进去,你将看到一个非常惊艳的控制台:

  1. Workspace:自动为你刚才 log 的字典里的每一个键(如 Account/Total Equity)生成平滑的折线图。

  2. Overview:显示你这次运行配置的 config 参数。

  3. Code:直接展示你运行代码时的 Git 状态、Commit 记录,甚至会告诉你当前有没有未提交的脏代码(Dirty Tree)。

当你测试完 4H 降频版,接着测试 ATR 自适应止损版时,你可以在 W&B 的网页上选中这两次实验,它会把两条资金曲线和 Token 消耗曲线画在同一张图表上,孰优孰劣,一目了然。

分享到:

发表评论

评论列表