@property
    def cycle(self):
        # If present, cycle always follows level/trend and seasonal
        # Note that we return only the first cyclical state, but there are
        # in fact 2 cyclical states. The second cyclical state is not simply
        # a lag of the first cyclical state, but the first cyclical state is
        # the one that enters the measurement equation.
        out = None
        spec = self.specification
        if spec.cycle:
            offset = int(spec.trend + spec.level +
                         spec.seasonal * (spec.seasonal_period - 1))
            out = Bunch(filtered=self.filtered_state[offset],
                        filtered_cov=self.filtered_state_cov[offset, offset],
                        smoothed=None, smoothed_cov=None,
                        offset=offset)
            if self.smoothed_state is not None:
                out.smoothed = self.smoothed_state[offset]
            if self.smoothed_state_cov is not None:
                out.smoothed_cov = self.smoothed_state_cov[offset, offset]
        return out
Run the PostProcessor.
dataset/ETHPy150Open statsmodels/statsmodels/statsmodels/tsa/statespace/structural.py/UnobservedComponentsResults.cycle--crossover with--dataset/ETHPy150Open yasoob/youtube-dl-GUI/youtube_dl/postprocessor/common.py/PostProcessor.run