alphalens 使用总结(一)

Alphalens 的基本情况

Quantopian是国外著名的量化交易平台,早期聚宽就是仿照这个网站开发的,算是这类平台的鼻祖了,可惜Quantopian最近刚宣布要停止运营了。Quantopian开发了许多优秀的开源项目,其中比较著名的有zipline、pyfolio和alphalens,zipline是事件驱动的回测引擎,Alphalens与Zipline开源回溯测试库以及Pyfolio配合使用,Pyfolio提供金融投资组合的绩效和风险分析。

Alphalens主要功能是alpha因子的相关性统计数据和图表展示,包括:

  • Returns Analysis

  • Information Coefficient Analysis

  • Turnover Analysis

  • Grouped Analysis

参考[2],并根据2修改后的例子

import numpy as np
import pandas as pd
import tushare as ts
from  pyfinance import TSeries


ts.set_token('217696db052cdea3e43bec347ee55a8ebbcb501e0b6d57d816a7542f')

pro = ts.pro_api()
# 此接口获取的数据为未复权数据,回测建议使用后复权数据,这里为批量获取股票数据做了简化
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20200101', end_date='20201231')
df.rename(columns={'trade_date':'date','ts_code':'asset'}, inplace=True)

df.index = pd.to_datetime(df['date'])
df.index.name = None
df.sort_index(inplace=True)
# MultiIndex,level0为日期,level1为股票代码,assets为get_clean_factor_and_forward_returns所需的因子数据格式

# column为股票代码,index为日期,值为股票收盘价
close = df.pivot_table(index='date',columns='asset',values='close')
close.index = pd.to_datetime(close.index)
df.index.name = 'date'
assets = df.set_index([df.index, df['asset']], drop=True)
 ​

单纯按照[2]的例子,可能会出现后面下面那段代码运行不出来。

 from alphalens.utils import get_clean_factor_and_forward_returns
 from alphalens.tears import create_full_tear_sheet
 # 需要将pct_chg做shift处理,否则将使用未来数据
 ret = get_clean_factor_and_forward_returns(assets[['pct_chg']].shift(2),close)
 create_full_tear_sheet(ret, long_short=False)

重点

由于alphalens 是2020年的代码。但是pandas 好像进行了 修改不让下面这样的操作,所以需要修改alphalens.

 mi = pd.MultiIndex.from_product([[1, 2], ["a", "b"]], names=["x", "y"])
 mi.levels[0].name = "name via level"

需要修改 /alphalens/utils.py

进行如下修改。

#df.index.levels[0].name = "date"
#df.index.levels[1].name = "asset"
df.index.set_names("date",level=0)
df.index.set_names("asset",level=1)

[1]  https://www.jianshu.com/p/78e101433ddf "Python 数据处理(二十九)—— MultiIndex 高级索引操作"

[2​]  https://blog.csdn.net/eryk86/article/details/109913768 "Quantopian单因子分析工具:Alphalens"

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值