code: def test_holdback_lastobs(self):
      y = self.ar2_garch
      mod = arch_model(y, hold_back=20)
      res_holdback_last_obs = mod.fit(disp="off", last_obs=800)
      mod = arch_model(y)
      res_first_obs_last_obs = mod.fit(
          disp="off", first_obs=20, last_obs=800
      )
      assert_allclose(
          res_holdback_last_obs.params, res_first_obs_last_obs.params
      )
      mod = arch_model(y[20:800])
      res_direct = mod.fit(disp="off")
      assert_allclose(res_direct.params, res_first_obs_last_obs.params)
  
      with pytest.raises(ValueError):
          res_holdback_last_obs.forecast(start=18)
  
imports: import datetime
  from itertools import product
  import numpy
  from numpy.random import RandomState
  from numpy.testing import assert_allclose
  import pandas
  from pandas.testing import assert_frame_equal
  import pytest
  from arch.data import sp500
  from arch.tests.univariate.test_variance_forecasting import preserved_state
  from arch.univariate import APARCH, ARX, EGARCH, FIGARCH, GARCH, HARCH, HARX, ConstantMean, ConstantVariance, EWMAVariance, MIDASHyperbolic, RiskMetrics2006, ZeroMean, arch_model
  from arch.univariate.mean import _ar_forecast, _ar_to_impulse
label_desc: Use image node_id 20 for calling the TestForecasting obj's underlying member method code with example usage: obj.test_holdback_lastobs() without return types