code: def simulation(self, ts_length=90, random_state=None):
          
          from scipy.signal import dlsim
          random_state = check_random_state(random_state)
  
          sys = self.ma_poly, self.ar_poly, 1
          u = random_state.randn(ts_length, 1) * self.sigma
          vals = dlsim(sys, u)[1]
  
          return vals.flatten()
docs: Compute a simulated sample path assuming Gaussian shocks.
  
          Parameters
          ----------
          ts_length : scalar(int), optional(default=90)
              Number of periods to simulate for
  
          random_state : int or np.random.RandomState, optional
              Random seed (integer) or np.random.RandomState instance to set
              the initial state of the random number generator for
              reproducibility. If None, a randomly initialized RandomState is
              used.
  
          Returns
          -------
          vals : array_like(float)
              A simulation of the model that corresponds to this class