返回首页

新闻情绪作为交易信号:算法交易者指南

本文解释了如何使用 vector search 和 RAG models 将新闻情绪分析作为交易信号。提供了实用示例、代码和仓位管理建议。

情绪交易:新闻情绪如何击败技术分析
Advertisement 728x90

# 在算法交易中使用新闻情绪作为交易信号

加密货币市场的算法交易在指标忽略市场状态转变时会失去效力。解决方案是通过向量搜索和 RAG 模型分析新闻情绪,而不是 LLM 解读。这能让你在价格反映之前捕捉到基本情绪转变。

为什么传统指标会失效

移动平均线和 RSI 是基于历史数据校准的,假设市场状态稳定。但现实中会有看跌和看涨日交替,甚至在一天内翻转。技术分析无法适应这些切换,因为它基于平均化。早上有正面新闻,晚上负面新闻。结果,指标显示“噪音”而非趋势。

问题不在于工具本身——而在于使用语境。指标在特定状态下有效,但无法识别状态本身。新闻背景决定了状态——权威来源如何塑造市场参与者的认知。

Google AdInline article slot

如何正确收集和过滤新闻

构建信号不仅仅是解析标题。三个参数至关重要:域名、发布时间和向量相似度。以下是具体方法:

  • 使用向量搜索而非关键词

- 利用 PgVector 或 MongoDB Atlas Vector Search 进行语义搜索,而不是词匹配。

- 寻找余弦相似度接近零的分数——它们能捕捉隐藏影响(例如,提及 Trump 但无直接 Bitcoin 引用)。

Google AdInline article slot

- 跳过 LLM 用于初始搜索——它们是解读而非捕捉原始情绪。

  • 聚焦权威域名

- SEC 监管文件本身不会驱动市场——只有被有影响力的博主或分析师转载时才行。

- 建立域名白名单,这些域名的受众真正能影响散户投资者。

Google AdInline article slot
  • 考虑时间因素

- 每日平均会抹杀方向性。使用严格的 24 小时窗口——足以过滤噪音并保留语境。

- 过滤掉发布时间未知的文章(例如,00:00:00 GMT)。它们会引入前视偏差。

实际实现:代码和过滤

在使用 Tavily 等 API 时,要正确处理时间戳。以下是 JavaScript 过滤示例:

const hour = dayjs(publishedDate).utc().get("hour");
const minute = dayjs(publishedDate).utc().get("minute");
if (hour === 0 && minute === 0) {
    console.warn(`fetchNews search invalid publishedDate query=${query} url=${url} from=${from} to=${to}`)
    return false;
}

此外,向后查询 -2 天数据,然后本地过滤最近 24 小时。这能修复因 CDN 和数据库问题导致的日界丢失发布。

案例研究:情绪如何领先价格变动

在两个真实案例中,基于向量搜索的系统正确识别了方向:

  • 中性-看跌情绪 → 随后 BTC 价格下跌。
  • 看涨情绪 → 随后几小时稳步上涨。

关键点:系统不预测价格。它捕捉众多文章协同塑造集体市场预期的效应。这些预期随后在图表中显现。

仓位管理:基于盈亏退出,而非情绪

基于情绪转变退出交易太晚了。解析器有延迟,你会损失利润。最优方法:在开仓最大盈亏回撤 3% 时获利了结。

示例:如果仓位达到 +10%,在 +7% 退出。这能锁定 97% 的收益,即使新闻尚未转变。在 10 次交易中,这可将总回报提升高达 +30%。

风险管理上,使用硬止损和追踪止盈。它们能防范即使最快新闻系统也错过的突发反转。

关键要点

  • 将向量搜索与 LLM 分离:前者发现情绪,后者解读它。
  • 24 小时窗口最优:更短增加噪音,更长丢失方向。
  • 权威域名 > 监管机构:市场对解读反应,而非事实。
  • 基于盈亏退出,而非信号:每笔盈利交易节省 3%。
  • 过滤无时间文章:它们会扭曲回测。

— Editorial Team

Advertisement 728x90

继续阅读