Skip to content

invalid index to scalar variable @ mode(days_diffs).mode[0]  #404

Open
@BCAA50000

Description

Problem Summary:
I tried multiple writer's code, always the same error.
Error Trace:alphalens.utils - > get_clean_factor_and_forward_returns -> compute_forward_returns 的 mode(days_diffs).mode[0] : IndexError: invalid index to scalar variable

`# -- coding: utf-8 --
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)

`

** traceback:**
Traceback (most recent call last):
File "D:\Quant\Projects\ALPHALENS_TEST\CSDN范例.py", line 36, in
input_df = alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, periods=(1, 5, ), bins=10, quantiles=None)
File "D:\Quant\Projects\ALPHALENS_TEST\venv\lib\site-packages\alphalens\utils.py", line 827, in get_clean_factor_and_forward_returns
forward_returns = compute_forward_returns(
File "D:\Quant\Projects\ALPHALENS_TEST\venv\lib\site-packages\alphalens\utils.py", line 319, in compute_forward_returns
delta_days = period_len.components.days - mode(days_diffs).mode[0]
IndexError: invalid index to scalar variable.


**Please provide any additional information below:**
The same code can run on my friends environment.

## Versions
python3.10,
Name: alphalens
Version: 0.4.0
Name: pandas
Version: 1.5.3
Name: numpy
Version: 1.23.1

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions