因子IC分析与收益alpha分析背后的逻辑实证(代码+数据下载)

专注“个人成长与财富自由、世界运作的逻辑与投资“。

1、选择IC在0.02 以上,按预期收益率排序,因子相关性分析,选择低相关的。等权,加权组合,回测。

2、pycaret(lightgbm)及调参。

3、autogluon精调lightgbm。

IC绝对值排序,alpha158因子集,大于0.03的19个,大于0.02的55个。

我们选择大于0.02这55个因子进行分析。

下面来计算预期收益。

图片

import alphalens
import duckdb
import pandas as pd

# 文件包,放在ailabx/data下的hist_hs300_20230813下,使用duckdb直接访问
from config import DATA_DIR

HS300 = DATA_DIR.joinpath('hist_hs300_20230813')

from datafeed.dataloader import Duckdbloader
from factor import alpha

a = alpha.Alpha158()

factors_names = ['CORD60']
fields = [a.get_field_by_name(n) for n in factors_names]

loader = Duckdbloader(path=DATA_DIR.joinpath('hist_hs300_20230813').resolve(), symbols=None,
                      columns=['close', 'open', 'high', 'low', 'volume'],
                      start_date="20100101")

df = loader.load(fields=fields, names=factors_names)
prices = df.pivot_table(columns='symbol', index='date', values='close')
df.set_index([df.index, 'symbol'], inplace=True)
# 因子值
factor = df[[factors_names[0]]]
data = alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, quantiles=5, periods=(1, 5, 10, 20))
print(data)
res = alphalens.performance.factor_alpha_beta(data)
print(res)

图片

我们就取5D这个周期即,对55个高ic的因子进行收益分析:

from config import DATA_DIR
import pandas as pd

csv = DATA_DIR.joinpath('ic_sorted.csv')
df_factors = pd.read_csv(csv.resolve(), index_col=0)
df_factors = df_factors[df_factors['abs_ic'] > 0.02]
print('大于0.02的因子一共{}'.format(len(df_factors)))

# 下面进行收益分析
factor_names = list(df_factors['name'])

from factor.alphalens_lit import calc_alpha
results = calc_alpha(factor_names)
pd.DataFrame(results).sort_values(by='abs_alpha', ascending=False).to_csv('factor_alpha.csv')

从alpha来排序,动量和价量背离,但价量背离的ic更高,也就是更加稳定。

QTLD5的年化收益达到“惊人”的程度。

图片

图片

图片

pycaret自动机器学习:

图片

数据自动预处理,划分数据集:

图片

内置多数的机器学习模型:

图片

使用lightgbm:

图片

一次运行多个模型:

图片

代码在examples下:已经同步至星球:

【优惠券】知识星球与开源项目:万物之中,希望至美

明天使用autogluon来高精度调参。

图片

吾日三省吾身

 聊聊ABCZ,人生计划之”ABCZ”

网上看到一个观点,它是ABZ计划:

A计划是事业主要组成部分、收入主要来源,求稳,重在精进。这个受很多因素影响,你的职业惯性,你的职场机遇等。A计划求稳,尽管创业公司像当年的字节,有股权之类的大机会,但其概率不大,A计划还是要求稳为主。

B计划是事业后备组成部分、收入次要来源,求变,重在替代。这个就是现在很多人的副业,你自己喜欢且擅长的事情,如果有价值,那么也可以获得回报,甚至有人把它做成主业,实现跃迁。——是不是要替代倒不一定。我觉得可以是多一个支柱,更加稳健和有底气。而且最好能建成“自动化”的管道最初樊登做读书会完全是兼职,当读书会发展了两年以后,他才辞掉大学老师的工作,全职去做这项事业,现在做为了知识付费的独角兽。这个相当于演化成我们说的C计划了,做成了一件大事。

重点说说C计划,Crazy,还是要有点大的梦想,万一实现了呢。A与B两个计划里,可以再寻找C之可能性。你说这不是又开启一个新的B计划,区别在于B计划还是更具体加务实。

可能的方向: 股权,创业(大模型),高赔率的投资(比如加密货币)。可以从A计划延伸,也是B计划的扩展,毕竟,不能凭空产生。当然多增加对外的触点,对环境变化敏感。可以小范围参与一些“不那么熟悉”的机会

Z计划是人生风险控制部分、收入应急来源,求保,重在风控。Z计划与我说的类似,资产计划,比如500万,10%这样的长线投资理财组合。这个兜底方案,是自动化运行的,是被动收入,即便ABC都没有达预期,仍然可以过得不错的人生状态。A计划与B计划都可为Z计划注入本金,投资能力等。

今天的一些主要工作成果:

1、按5天(周调参)对因子ic进行排序。

2、对多个因子进行回测比较。 

3、alphalens-reloaded比较 波动率与量价背离等因子的 ic分析细节。 

4、pycaret机器学习模型应用于量化(vs autogluon 高精度调参)。

昨天对于因子进行了异常值、因子归一化等,计算量增加不少,但结果并没有特别大的变化。之前我们是综合计算了多个周期,比如1,5,10,20天,今天我们就按照5天(按周调仓)的模式来对比下。

ic值排在前面的仍然提“量化背离”的CORD30,60。

图片

下面我们直接来回测比较一下:

CORR20是IC比CORD30和CORD60都小一些。但从实际回测的结果看,CORR20效果最好,CORD60效果最差。而IC值倒数的STD60呢,结果也还不错。

————这里需要仔细分析,也间接证明IC分析容易出错的地方。

同一个因子,比如CORR20,取前10%与后10%,这个分层测试基本是单调的,说明这个因子是可以把好坏股票区分出来。

而IC是相关性的均值,这个均值可能存在波动性。横向对比的单调性就不好说了。因此我们需要进一步仔细分析std60的因子情况。

图片

使用alphalens-reloaded这样库来分析:

STD60的收益率分析很高,但ic很小。这个说明什么问题呢,这就是IC分析与收益率分析结果不一样如何决策的问题了。

设𝑋,𝑌为两个向量,则  ,其中  为线性回归  或线性回归  的可决系数(其中𝑎,𝑏是待回归系数)。 

也就是说IC值是可决系数。IC越大,则收益预测越有效。

reg_fit = OLS(y, x).fit()
try:
    alpha, beta = reg_fit.params
except ValueError:
    alpha_beta.loc['Ann. alpha', period] = np.nan
    alpha_beta.loc['beta', period] = np.nan

因此,IC值代表因子收益的稳定性,如果IC值高,且预测收益也高,这就是好因子。STD60明显就是回测收益很好,实盘可能很有问题的逻辑。

这是CORR20:

图片

CORD30:

图片

CORD60:

图片

STD60:

图片

吾日三省吾身

关于焦虑或者其他烦心之事,我自己当前的一个观感,时间是最好的解药

事缓则圆,说的就是这个道理。我们担心的事情,99%并不会发生,剩下那1%,就算真的发生了,也并没有我们想象中的严重,我们都能从容应对。

反而,一些黑天鹅事件,比如蔡磊的渐冻症,这种是没有办法,没有理由,那么他只能从容面对。

另外,就是长远的目标,要令人兴奋,但要可努力,通过努力基本可达的目标。你能专注自己想做的事情,且能看到进步,那么很多焦虑就会自动消散。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103954
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注