量化交易 单因子有效性分析之 IC 分析

  • 时间:
  • 浏览:
  • 来源:互联网

单因子有效性分析之 IC 分析

  • 概述
  • 信息系数的定义
    • 皮尔逊积矩相关系数
    • 斯皮尔曼等级相关系数
  • 如何求收益率
    • 收益率区间
    • 计算公式
  • 单因子单天 IC 分析
    • 分析
    • 第一部分
      • 代码
      • 输出结果
    • 第二部分
      • 代码
      • 输出结果
    • 第三部分
      • 代码
      • 输出结果

概述

因子的 IC 分析需要确定的是因子与收益率之间的相关性, 提供给删选的数据, 也就是这张表格中的 IC 相关值.
在这里插入图片描述
IC (Information Coefficient) 信息系数:

  • IC mean: 因子 IC 的平均值
  • IC std: 因子 IC 的标准差
  • IC > 0.02: 因子 IC 大于 0.02 的比例 (可改, 数值越大越严格)

IR (Information Ratio) 信息比例:

  • 因子 IR 越大, 代表因子在历史上表现的稳定性
  • IR = IC 均值 / IC 的波动率
  • 因子在不同的历史时期的表现有可能查边很大. 表现在 IC 上, 就是 IC 的波动率很大. 假设 IC 均值一定, IC 的波动率越小, 因子表现越稳定, IR 就越大
  • IR > 0.3 进行筛选 (可以修改标准)

信息系数的定义

某一期的 IC 指的是该期因子爆露至和股票下期的实际回报值在横截面上的相关系数.

举个栗子: 假设周期为一天, IC 为 “20210103” 的因子暴露值和 “20210104” 的股票收益的关系系数.
在这里插入图片描述
注: 因子暴露度指的是因子本身的值.

皮尔逊积矩相关系数

皮尔逊积矩阵相关系数 (Person product_moment correlation coefficient) 用于度量两个变量 X 和 Y 之间的相关程度 (线性相关). 取值在 -1 与 1 之间.

举个栗子, 您可能使用 Pearson 相关来评估您生产设施温度的升高是否与巧克力涂层的厚度减少有关.
在这里插入图片描述

斯皮尔曼等级相关系数

斯皮尔曼等级相关系数 (Spearman’s rank correlation coefficient) 衡量两个变量的依赖性的无母数指标. Spearman 相关评估两个连续或顺序变量之间的单调关系. 在单调关系中, 变量倾向于同时变化, 但不一定以恒定的速率变化. Spearman 相关系数基于每个变量的秩值 (而非原始数据). Spearman 相关通常用于评估与顺序变量相关的关系.

举个栗子, 您可能会使用 Spearman 相关来评估员工完成检验练习的顺序是否与他们工作的月数相关。

注: Spearman 系数比 Person 系数的应用更加广泛.

如何求收益率

收益率区间

按照区间大小或者研究的区间大小:

  • 日收益率
  • 月收益率
  • 年收益率

计算公式

在这里插入图片描述
这期收盘价减去上期收盘价 / 上期收盘价. 计算收益率时, 假如是月收益率, 就认定每月最后一天价格作为当月价格.

单因子单天 IC 分析

比如我们需要计算2021-03-18的因子IC值 (与收益相关)

分析

  1. 2021-03-18的因子暴露
  2. 2021-03-19的股票收益, 3月19号的收盘价-3月18号的收盘价 / 3月18号的收盘价
  3. 计算相关性系数

第一部分

# 比如我们需要计算2021-03-18的因子IC值 (与收益相关)
# 1. 2021-03-18的因子暴露
# 2. 2021-03-19的股票收益, 3月19号的收盘价-3月18号的收盘价 / 3月18号的收盘价
# 3. 计算相关性系数

代码

# 1. 2021-03-18的因子暴露值
q = query(
    fundamentals.income_statement.basic_earnings_per_share
)

fund = get_fundamentals(q, entry_date="2021-03-18").iloc[:, 0, :]
fund = fund.dropna()
print(fund)

输出结果

            basic_earnings_per_share
688060.XSHG                   0.7717
688393.XSHG                     0.47
688055.XSHG                    0.038
688185.XSHG                    -0.76
688301.XSHG                     0.52
688819.XSHG                     1.71
688221.XSHG                    -0.61
688180.XSHG                    -1.39
688377.XSHG                      0.4
688106.XSHG                     0.36
688286.XSHG                     0.75
688004.XSHG                     0.35
688589.XSHG                     0.21
688669.XSHG                     1.44
688571.XSHG                     0.38
688560.XSHG                     0.85
688350.XSHG                     0.93
688689.XSHG                     0.57
688063.XSHG                     1.69
688317.XSHG                     0.67
688981.XSHG                     0.51
688408.XSHG                     1.13
688536.XSHG                     2.71
688398.XSHG                     0.71
688166.XSHG                      0.3
688066.XSHG                      0.2
688388.XSHG                      0.5
688122.XSHG                     0.62
688001.XSHG                     0.67
688078.XSHG                     0.36
...                              ...
605186.XSHG                     0.58
605188.XSHG                     0.19
605198.XSHG                    0.331
605199.XSHG                      0.2
605208.XSHG                     1.23
605218.XSHG                   0.3559
605228.XSHG                     0.25
605255.XSHG                     0.35
605266.XSHG                      4.3
605268.XSHG                      0.4
605277.XSHG                     0.79
605288.XSHG                     2.53
605298.XSHG                     1.29
605303.XSHG                     0.61
605299.XSHG                     0.21
605318.XSHG                     0.29
605333.XSHG                     0.11
605336.XSHG                     1.18
605337.XSHG                     1.24
605338.XSHG                     0.55
605358.XSHG                     0.36
605366.XSHG                     0.38
605368.XSHG                      0.6
605369.XSHG                     3.48
605377.XSHG                     1.13
605376.XSHG                     0.59
605398.XSHG                     1.27
605388.XSHG                     0.54
605399.XSHG                     0.53
605500.XSHG                     0.79

[3983 rows x 1 columns]

第二部分

代码

# 2. 2021-03-019的股票收益, 3月19号的收盘价-3月18号的收盘价 / 3月18号的收盘价
# 每个股票都有一个价格收益计算
price_previous = get_price(fund.index, start_date="2021-03-18", end_date="2021-03-18", fields="close").T  # 3月18的收盘价
price_now = get_price(fund.index,start_date="2021-3-19",end_date="2021-03-19", fields="close").T  # 3月19的收盘价

# 调试输出
print(price_previous.head())
print(price_now.head())
print()

# 计算收益率
stock_yield = (price_now.iloc[:, 0] - price_previous.iloc[:, 0]) / price_previous.iloc[:, 0]
print(stock_yield.head())

输出结果

date         2021-03-18
600165.XSHG        5.89
000601.XSHE        6.25
002365.XSHE        9.13
300553.XSHE       29.45
600302.XSHG        4.32
date         2021-03-19
600165.XSHG        5.83
000601.XSHE        6.26
002365.XSHE        9.36
300553.XSHE       28.29
600302.XSHG        4.34

600165.XSHG   -0.010187
000601.XSHE    0.001600
002365.XSHE    0.025192
300553.XSHE   -0.039389
600302.XSHG    0.004630
dtype: float64

第三部分

代码

import scipy.stats as st

# 3. 计算收益率
st.spearmanr(fund["basic_earnings_per_share"], stock_yield)

输出结果

SpearmanrResult(correlation=-0.0011851490981407823, pvalue=0.9403957145215402)

本文链接http://www.dzjqx.cn/news/show-617235.html