量化交易 第十四课 单因子有效性分析之 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)
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值