量化交易_展.717

昨天黄兄说这个比赛找到影响因子很重要。今天就大概看了看,目前收获不多,没啥想法。

官方demo中的影响因子:

1. 影响因子(特征)列表

train 方法中,以下7个因子被用作XGBoost模型的输入特征:

英文名 中文解释 计算方式/含义简述
4h_momentum 4小时动量 4小时内价格变动幅度
7d_momentum 7天动量 7天内价格变动幅度
amount_sum 7天成交额总和 7天内所有成交额的累加
vol_momentum 1天成交量动量 1天内成交量的变化率
atr 平均真实波动率 反映价格波动性的技术指标
macd MACD指标 反映趋势强度和方向的技术指标
buy_pressure 买入压力 买入成交量-卖出成交量

2. 这些因子的来源

这些因子都是在 run 方法中通过对原始K线数据的处理和滚动窗口计算得到的。例如:

  • df_4h_momentum = (df_vwap / df_vwap.shift(windows_4h) - 1)
  • df_7d_momentum = (df_vwap / df_vwap.shift(windows_7d) - 1)
  • df_amount_sum = df_amount.rolling(windows_7d).sum()
  • df_vol_momentum = (df_amount / df_amount.shift(windows_1d) - 1)
  • df_atr, df_macd 是在数据预处理时通过技术指标函数计算的
  • df_buy_pressure = (df_buy_volume - (df_volume - df_buy_volume))

3. 这些因子的作用

  • 动量因子(4h/7d):反映短期和中期的价格趋势
  • 成交额/量因子:反映市场活跃度和资金流向
  • 波动率因子(ATR):反映市场风险和不确定性
  • MACD:反映趋势的强弱和转折点
  • 买入压力:反映多空力量对比

4. 在模型中的使用

train 方法中,这些因子被拼接成特征矩阵 X,作为XGBoost的输入:

X = data[['4h_momentum', '7d_momentum', 'amount_sum', 'vol_momentum', 'atr', 'macd', 'buy_pressure']]



1. 什么是“链上数据”和“社交媒体情绪”因子?

  • 链上数据:区块链本身产生的数据,比如转账数量、大户持仓变化、活跃地址数、Gas费等。
  • 社交媒体情绪:推特、Reddit、微博等平台上,大家对某个币的讨论热度、情绪倾向(乐观/悲观)。

这些因子能反映市场的“资金流动”和“情绪风向”,在加密货币领域非常有用。


2. 获取方式:API还是自己造因子?

(1)API能直接获取的是什么?

  • API通常只能给你原始数据,比如:
    • 某币每天的链上转账数
    • 某币在推特上的提及次数
    • 某条推文的情感分数
  • 很少有API直接给你“因子”本身(比如“链上活跃度因子”),因子的设计和加工需要你自己完成

(2)你需要做的步骤

  1. 用API获取原始数据
    • 比如用Glassnode、CryptoQuant、Santiment等API获取链上数据
    • 用Twitter API、Reddit API、LunarCrush等获取社交媒体数据
  2. 自己加工成“因子”
    • 比如“近7天活跃地址数的变化率”=(今天活跃地址数-7天前)/7天前
    • 比如“推特情绪均值”=近24小时所有推文的情感分数平均值
  3. 把这些因子加到你的特征工程里,和价格、成交量等一起输入模型

3. 举例说明

链上数据因子举例

  • 原始API数据:每天的活跃地址数
  • 你加工的因子:活跃地址数7日变化率、鲸鱼转账占比、链上交易总额等

社交媒体情绪因子举例

  • 原始API数据:每条推文的情感分数
  • 你加工的因子:24小时情绪均值、情绪极端值比例、讨论热度(推文数量)等

4. 为什么要自己造因子?

  • 原始数据噪声大,直接用效果不好
  • 因子设计=提炼有用信息,让模型更容易学到规律
  • 每个项目、每个币的有效因子都可能不同,需要你根据实际情况设计和测试

5. 总结

  • API能帮你拿到原始数据,但“因子”需要你自己加工和设计。
  • 你可以先用API拿到数据,再用pandas/numpy等工具做统计、变化率、均值、极值等处理,变成适合建模的“因子”。
  • 这就是量化里“因子工程”的核心:数据→加工→因子→模型