I'm trying to obtain beta for Asian equities using RollingLinearRegressionOfReturns but I keep getting the error - unhashable type: 'list'.
I think the error primarily occurs because the China domain is list type. However, the RollingLinearRegressionOfReturns requires dictionary key to be the target so I couldn't change the CN_EQUITIES into str or tuple.
Does anyone have any idea on how to solve this issue? Thank you!
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.data import EquityPricing, factset
from quantopian.pipeline.domain import CN_EQUITIES
from quantopian.pipeline.data.factset import Fundamentals
from quantopian.pipeline import CustomFactor
from quantopian.pipeline.factors import RollingLinearRegressionOfReturns #It's a factor!!
from zipline.api import attach_pipeline, pipeline_output
import pandas as pd
import numpy as np
import datetime
import calendar
def make_pipeline(domain):
market_cap = factset.Fundamentals.mkt_val_public.latest #market cap
list_regression = RollingLinearRegressionOfReturns(
target= [CN_EQUITIES],
returns_length=21,
regression_length=252,
)
beta=regression.beta
columns={
'market_cap':market_cap,
'beta':beta.winsorize(min_percentile=0.01, max_percentile=0.99),
}
return Pipeline(columns, domain=domain)
df_cn = run_pipeline(make_pipeline(CN_EQUITIES),'2015-01-15', '2016-01-15')