def test_sample_mixed(self): # test that sampling works also when we have both covs = 0 and # covs != 0 assets_num = 1 samples_num = 1 correlation = 0.37 epsilons = scientific.make_epsilons( numpy.zeros((assets_num, samples_num)), seed=17, correlation=correlation) self.dist = scientific.LogNormalDistribution(epsilons) samples = self.dist.sample(numpy.array([0., 0., .1, .1]), numpy.array([0., .1, 0., .1]), None, slice(None)).reshape(-1) numpy.testing.assert_allclose([0., 0., 0.1, 0.10228396], samples)
def test_init(self): assets_num = 100 samples_num = 1000 correlation = 0.37 epsilons = scientific.make_epsilons( numpy.zeros((assets_num, samples_num)), seed=17, correlation=correlation) self.dist = scientific.LogNormalDistribution(epsilons) tol = 0.1 for a1, a2 in scientific.pairwise(range(assets_num)): coeffs = numpy.corrcoef( self.dist.epsilons[a1, :], self.dist.epsilons[a2, :]) numpy.testing.assert_allclose([1, 1], [coeffs[0, 0], coeffs[1, 1]]) numpy.testing.assert_allclose( correlation, coeffs[0, 1], rtol=0, atol=tol) numpy.testing.assert_allclose( correlation, coeffs[1, 0], rtol=0, atol=tol)