量化交易 实战第十课 多因子合成
【摘要】
量化交易 实战第十课 多因子合成
概述PCA 方法代码实现分析代码效果
概述
在多因子中, 我们希望通过多个因子的叠加来提高模型整体对于未来收益率的预测能力. 我们会把相关性高 (低)...
概述
在多因子中, 我们希望通过多个因子的叠加来提高模型整体对于未来收益率的预测能力. 我们会把相关性高 (低) 的一些因子合成成一个因子.
PCA 方法
PAC (Principal Component Analysis) 是一种数学降维方法. 通过利用正交变换把一系列可能线性的变量转换为一组不相关的新变量.
PCA 的用法:
from sklearn.decomposition import PCA
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
- 1
- 2
- 3
n_components:
- 意义: PCA 算法中所要保留的主成分个数 n
- 类型: int 或者 string. 缺失时默认为 None, 所有成分被保留
- 赋值为 int, 比如
n_components=1
, 将把原始数据降到一个维度 - 赋值为 string, 比如
n_compents="mle"
, 将自动选取特征个数 n, 使得满足所需求的方差百分比
代码实现
分析
在之前的文章中我们发现资产回报率和资本回报率这两个因子相关性较高, 所以我们将这两个因子进行合成.
- 获取因子数据
- 应用 PCA 进行合成
代码
# 因子合成
# 分析的区间2020-01-01到2021-01-01
import numpy as np
import pandas as pd
import datetime
from alphalens import performance
from alphalens import plotting
from alphalens import tears
from alphalens import utils
from sklearn.decomposition import PCA
factor_1 = "return_on_asset_net_profit"
factor_2 = "return_on_invested_capital"
# ----------------1. 获取因子数据----------------
# 获取这一年的交易日期
date_data = get_trading_dates(start_date="2020-01-01", end_date="2021-01-01")
# 定义df数据集
all_data = pd.DataFrame()
for date in date_data:
# 获取当天因子数据
q = query(
fundamentals.financial_indicator.return_on_asset_net_profit,
fundamentals.financial_indicator.return_on_invested_capital
)
# 获取截面数据
fund = get_fundamentals(q, entry_date=date).iloc[:, 0, :]
# 创建日期列
fund["date"] = date
# 拼接
all_data = pd.concat([all_data, fund])
# ----------------2. 合成因子---------------
# 填充缺失值
all_data[factor_1] = all_data[factor_1].fillna(all_data[factor_1].mean())
all_data[factor_2] = all_data[factor_2].fillna(all_data[factor_2].mean())
# 实例化
pca = PCA(n_components=1)
compound_factor = pca.fit_transform(all_data[[factor_1, factor_2]])
print(compound_factor)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
效果
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/115172793
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)