Hi I am trying to make to make a strategy where I will get a bucket of Top 50 (or some other number) stocks as per dollar volume through pipeline.
Now, I will compute their respective Beta's (wrt. SPY maybe?) and then compute weights in-order to minimise the overall Beta.
I've recently started working with Quantopian and I am really struggling with implementing few basics, I would really appreciate some help.
Things where I'm stuck:
How do I get Beta's of respective stocks? I was trying to implement it by using 'RollingLinearRegressionOfReturns' in make_pipeline() and I couldn't figure out what target should be given to RollingLinearRegressionOfReturns.
- Can you give me few leads on how to compute weights such that it minimises the overall portfolio beta?
Attaching my code here
from quantopian.algorithm import attach_pipeline, pipeline_output
from quantopian.pipeline import Pipeline
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.factors import AverageDollarVolume,RollingLinearRegressionOfReturns
from quantopian.pipeline.filters.morningstar import Q500US
from quantopian.pipeline.filters import Filter
def initialize(context):
schedule_function(allot, date_rules.week_start(), time_rules.market_open(minutes=30))
attach_pipeline(make_pipeline(), 'my_pipeline')
def make_pipeline():
dollar_volume = AverageDollarVolume(window_length=5)
top_dollar_volume = dollar_volume.top(50)
pipe = Pipeline(
screen = top_dollar_volume,
)
return pipe
def before_trading_start(context, data):
context.output = pipeline_output('my_pipeline')
context.security_list = context.output.index.tolist()
context.beta_list = []
for se in context.security_list:
reg = RollingLinearRegressionOfReturns(
target=se,
returns_length=2,
regression_length=30,
)
context.beta_list.append(reg.beta)
print context.beta_list #This is not printing the Beta value
def allot(context,data):
pass
Thanks