docstr: Tests that the forwards obey the lower bound.
docstr_tok: ["Tests","that","the","forwards","obey","the","lower","bound","."]
code: def test_forward_obeys_lower_bound(
      self,
      beta,
      volvol,
      rho,
      time_step,
      initial_forward,
      shift,
      enabled_unbiased_sampling,
      initial_volatility=0.1,
  ):
      """Tests that the forwards obey the lower bound."""
      dtype = tf.float64
      times = [0.1, 0.3, 0.5]
      num_samples = 1000
      test_seed = [123, 124]
  
      process = SabrModel(
          beta=beta,
          volvol=volvol,
          rho=rho,
          dtype=dtype,
          shift=shift,
          enable_unbiased_sampling=enabled_unbiased_sampling,
      )
      paths = process.sample_paths(
          initial_forward=initial_forward,
          initial_volatility=initial_volatility,
          times=times,
          time_step=time_step,
          num_samples=num_samples,
          seed=test_seed,
          random_type=tff.math.random.RandomType.STATELESS_ANTITHETIC,
      )
  
      paths = self.evaluate(paths)
      forwards_axis = 0
  
      for i in range(len(times)):
          forwards_slice = paths[:, i, forwards_axis]
          self.assertTrue(np.all(forwards_slice >= -shift))
  
file_path: tf-quant-finance/tf_quant_finance/models/sabr/sabr_model_test.py
imports: import math
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tensorflow.python.framework import test_util
  from tf_quant_finance.models import euler_sampling
label_desc: Use image node_id 7 for calling the SabrModelTest obj's underlying member method code with example usage: obj.test_forward_obeys_lower_bound(beta, volvol, rho, time_step, initial_forward, shift, enabled_unbiased_sampling, initial_volatility) without return types