Source code for zipline.pipeline.filters.smoothing
"""
Filters that apply smoothing operations on other filters.
These are generally useful for controlling/minimizing turnover on existing
Filters.
"""
from .filter import CustomFilter
[docs]class All(CustomFilter):
"""
A Filter requiring that assets produce True for ``window_length``
consecutive days.
**Default Inputs:** None
**Default Window Length:** None
"""
[docs] def compute(self, today, assets, out, arg):
out[:] = arg.sum(axis=0) == self.window_length
[docs]class Any(CustomFilter):
"""
A Filter requiring that assets produce True for at least one day in the
last ``window_length`` days.
**Default Inputs:** None
**Default Window Length:** None
"""
[docs] def compute(self, today, assets, out, arg):
out[:] = arg.sum(axis=0) > 0
[docs]class AtLeastN(CustomFilter):
"""
A Filter requiring that assets produce True for at least N days in the
last ``window_length`` days.
**Default Inputs:** None
**Default Window Length:** None
"""
params = ("N",)
[docs] def compute(self, today, assets, out, arg, N):
out[:] = arg.sum(axis=0) >= N