Files
usa/docs/INDICATORS_WALLSTREET_RETALIATION.md
2026-03-06 14:20:18 +08:00

3.7 KiB
Raw Blame History

华尔街财团投入指数 & 反击情绪指数:更新逻辑与波动说明

一、数据流概览

爬虫提取 (extractor_ai / extractor_dashscope)
  → retaliation_sentiment / wall_street_value (0100按单篇报道)
  → db_merge.merge(extracted)
  → SQLite: retaliation_current, retaliation_history, wall_street_trend
  → server/situationData.js getSituation()
  → 前端: iranForces.retaliationSentiment(History), usForces.wallStreetInvestmentTrend
  → 组件: RetaliationGauge, InvestmentTrendChart回放: useReplaySituation 插值

二、当前写入逻辑crawler/db_merge.py

1. 华尔街财团投入指数 (wall_street_trend)

  • wall_street_trend(id, time, value),前端用整表做 wallStreetInvestmentTrend 折线。
  • 写入:每次爬虫产出 extracted["wall_street"] 时:
    • value 做限幅 [1, 99]不做任何平滑
    • 直接 INSERT INTO wall_street_trend (time, value) VALUES (?, ?)
    • 表保留最近 WALL_STREET_TREND_MAX_ROWS200条。
  • 波动原因
    • 每条报道一个点,爬虫频繁时点很密;
    • 不同报道提取值差异大(如 30 / 80 / 45曲线会剧烈锯齿
    • 无“与上一点平滑”,无时间间隔限制,易受单条 0/100 或异常值影响(虽已夹到 199

2. 反击情绪指数 (retaliation_current + retaliation_history)

  • retaliation_current(id=1, value) 当前值;retaliation_history(id, time, value) 历史曲线。
  • 写入:每次爬虫产出 extracted["retaliation"] 时:
    • 当前值平滑:new_val = 0.6 * current + 0.4 * raw,再夹到 [1, 99]
    • retaliation_current 更新为该 new_val
    • retaliation_history 追加一条 (time, new_val)
    • 历史表保留最近 RETALIATION_HISTORY_MAX_ROWS300条。
  • 波动原因
    • 多条新闻短时间连续写入时,每次都用新的 raw 更新 current连续多步 0.6/0.4 仍会快速漂移;
    • history 每写一次就一个点,点过密且 raw 差异大时折线仍会明显抖动;
    • 单步无“最大变化幅度”限制,极端 raw 仍会导致单次跳动较大。

三、爬虫侧产出形态

  • extractor_ai / extractor_dashscope:仅当报道涉及对应维度时才输出:
    • retaliation_sentiment0100
    • wall_street_value0100。
  • 每条报道独立一个值,多篇报道会多次调用 merge(),因此波动确实主要由爬虫数据更新频率和单条取值差异导致

四、稳定化思路(计算模块)

  1. 华尔街

    • 上一点做平滑再写入:例如 value = alpha * last_value + (1-alpha) * raw,再限幅;
    • 可选:仅当距上一条时间超过一定间隔(如 1530 分钟)才 INSERT减少密集点带来的锯齿。
  2. 反击情绪

    • 加强平滑例如提高当前值权重0.8 * current + 0.2 * raw
    • 单步变化上限:例如 new_val 相对 current 最多 ±N如 5
    • 历史记录:可对 history 做同样限幅或间隔写入,避免曲线过密抖动。

实现位置:crawler/indicator_smooth.py,在 db_merge.merge() 中调用,仍写回现有表,前端与 API 契约不变。

已实现参数(可调)

指标 参数 默认 说明
华尔街 WALL_STREET_NEW_WEIGHT 0.35 新 raw 权重,越小曲线越平滑
华尔街 WALL_STREET_MIN_INTERVAL_MINUTES 20 两笔趋势最小间隔(分钟),不足则本条不写入
反击情绪 RETALIATION_CURRENT_WEIGHT 0.8 当前值权重,越大越平滑
反击情绪 RETALIATION_MAX_STEP 5 单次相对当前值最大变化幅度(点)