code: def impulse_response(self, j=5):
          r
          # Pull out matrices
          A, C, G, H = self.A, self.C, self.G, self.H
          Apower = np.copy(A)
  
          # Create room for coefficients
          xcoef = [C]
          ycoef = [np.dot(G, C)]
  
          for i in range(j):
              xcoef.append(np.dot(Apower, C))
              ycoef.append(np.dot(G, np.dot(Apower, C)))
              Apower = np.dot(Apower, A)
  
          return xcoef, ycoef
docs: r"""
          Pulls off the imuplse response coefficients to a shock
          in :math:`w_{t}` for :math:`x` and :math:`y`
  
          Important to note: We are uninterested in the shocks to
          v for this method
  
          * :math:`x` coefficients are :math:`C, AC, A^2 C...`
          * :math:`y` coefficients are :math:`GC, GAC, GA^2C...`
  
          Parameters
          ----------
          j : Scalar(int)
              Number of coefficients that we want
  
          Returns
          -------
          xcoef : list(array_like(float, 2))
              The coefficients for x
          ycoef : list(array_like(float, 2))
              The coefficients for y