当前位置: 首页 > 工具软件 > Alphalens > 使用案例 >

alphalens的简单示例

袁泓
2023-12-01

前言

平时主要关注tick、分钟频,今天偶然做一些日频的工作,便直接参考了东北证券的研报《Alphalens使用教程》(2017-12-06)。
下文的示例中使用的模拟数据,将使用的数据转换成类似的格式即可。
示例中使用alphalens版本是0.4.0

示例

# -*- coding: utf-8 -*-
# @Time     :2021/9/18  13:26 
# @Author   :百载文枢江左
import alphalens
import pandas as pd
import random
import warnings
warnings.filterwarnings('ignore')


if __name__ == '__main__':
    # 模拟的交易日期序列
    trade_date_ls = pd.date_range('1/1/2010', '31/3/2020').tolist()
    # 模拟的股票代码序列
    stock_id_ls = [f"{'0' * (6 - len(str(i)))}{i}.SZ" for i in range(2000)]

    # 输入因子矩阵
    factor_ls = []
    for trade_date in trade_date_ls:
        for stock_id in stock_id_ls:
            factor_ls.append([trade_date, stock_id, random.random() / 100])
    factor = pd.DataFrame(factor_ls, columns=['trade_date', 'stock_id', 'factor1'])
    factor = factor.set_index(['trade_date', 'stock_id'])

    # 输入价格矩阵
    prices_ls = []
    for trade_date in trade_date_ls:
        tmp = [random.random() / 100 for _ in range(len(stock_id_ls))]
        tmp.append(trade_date)
        prices_ls.append(tmp)
    prices = pd.DataFrame(prices_ls, columns=['trade_date' if i == len(stock_id_ls) else stock_id_ls[i] for i in range(len(stock_id_ls) + 1)])
    prices = prices.set_index(['trade_date'])

    # periods表示调仓周期
    # bins表示分组数量
    input_df = alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, periods=(1, 5, ), bins=10, quantiles=None)

    alphalens.tears.create_information_tear_sheet(input_df)
    alphalens.tears.create_returns_tear_sheet(input_df)
 类似资料: