def __init__(self): dataset = data.sp500_returns(num_points=100) super(StochasticVolatilitySP500Small, self).__init__( name='stochastic_volatility_sp500_small', pretty_name= 'Smaller stochastic volatility model of S&P500 returns.', **dataset)
def __init__(self, use_markov_chain=False): dataset = data.sp500_returns() super(StochasticVolatilitySP500, self).__init__( name='stochastic_volatility_sp500', pretty_name='Stochastic volatility model of S&P500 returns.', use_markov_chain=use_markov_chain, **dataset)
def testStochasticVolatilityModelSP500(self): num_train_points = 2516 dataset = data.sp500_returns() self.assertEqual((num_train_points, ), dataset['centered_returns'].shape) self.assertAllClose(0.0, np.mean(dataset['centered_returns']), atol=1e-5)
def __init__( self, centered=False, use_fft=True, ): dataset = data.sp500_returns(num_points=100) super(VectorizedStochasticVolatilitySP500Small, self).__init__( name='vectorized_stochasticic_volatility_sp500_small', pretty_name='Smaller stochastic volatility model of S&P500 returns.', **dataset)
def __init__( self, centered=False, use_fft=True, ): dataset = data.sp500_returns() super(VectorizedStochasticVolatilitySP500, self).__init__( name='vectorized_stochastic_volatility_sp500', pretty_name='Stochastic volatility model of S&P500 returns.', **dataset)
def stochastic_volatility_sp500_small(): """Stochastic volatility model. This is a smaller version of `stochastic_volatility_model_sp500` using only 100 days of returns from the S&P 500, ending 6/24/2020. Returns: target: StanModel. """ dataset = data.sp500_returns(num_points=100) return stochastic_volatility.stochastic_volatility(**dataset)
def stochastic_volatility_sp500(): """Stochastic volatility model. This uses a dataset of 2517 daily returns of the S&P 500 index, representing the time period 6/25/2010-6/24/2020. Returns: target: StanModel. """ dataset = data.sp500_returns() return stochastic_volatility.stochastic_volatility(**dataset)
def testMarkovChainLogprobMatchesOriginal(self): # Use a very short dataset since the non-markov-chain model is slow. dataset = data.sp500_returns(num_points=10) model = stochastic_volatility.StochasticVolatility( use_markov_chain=False, **dataset) markov_chain_model = stochastic_volatility.StochasticVolatility( use_markov_chain=True, **dataset) xs = self.evaluate(model.prior_distribution().sample( 10, seed=tfp_test_util.test_seed())) xs_stacked = xs[:-1] + (tf.stack(xs[-1], axis=-1), ) self.assertAllClose( model.unnormalized_log_prob(xs), markov_chain_model.unnormalized_log_prob(xs_stacked), atol=1e-2)