Ian
You may want to consider using an index of 0 rather than a fixed negative index in your custom factors. Instead of..
class current_ratio_year(CustomFactor):
inputs = [morningstar.operation_ratios.current_ratio]
def compute(self, today, assets, out, inputs):
out[:] = inputs[-365]
class return_on_equity_1y(CustomFactor):
inputs = [morningstar.operation_ratios.roe]
def compute(self, today, assets, out, inputs):
out[:] = inputs[-365]
Do something like this..
class current_ratio_year(CustomFactor):
inputs = [morningstar.operation_ratios.current_ratio]
def compute(self, today, assets, out, inputs):
out[:] = inputs[0]
class return_on_equity_1y(CustomFactor):
inputs = [morningstar.operation_ratios.roe]
def compute(self, today, assets, out, inputs):
out[:] = inputs[0]
That will make it relative to your window length and won't cause an error if inadvertently putting in a shorter window length. Also, regarding window length. If you want a 1 year lookback then use window_length=252 as Jamie mentioned since this is in 'trading days' and not calendar days (maybe see https://en.wikipedia.org/wiki/Trading_day)