示例#1
0
 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)
示例#2
0
    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)