コード例 #1
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
    def test_multi_gauss_process(self):
        grid = list(range(0, 10))
        r = .9
        producer = GaussEvolutionProducer(
            MultiGauss([0., 0.], [[1., r], [r, 1.]], [0., 0.]))
        consumer = ConsumerConsumer(TransposedConsumer(lambda s: s.value[0]),
                                    TransposedConsumer(lambda s: s.value[1]))
        first, second = Engine(producer, consumer).run(grid,
                                                       500,
                                                       num_of_workers=None)

        if plt is not None:
            t = '2d-Scatter-MultiGauss'
            fig, ax = plt.subplots()
            ax.scatter(first[1], second[1])
            plt.title(t)
            plt.savefig('.' + sep + 'pdf' + sep + t.replace(' ', '_') + '.pdf')
            plt.close()

            t = '3d-Scatter-MultiGauss'
            fig = plt.figure()
            ax = fig.add_subplot(111, projection='3d')
            for i in grid:
                ax.scatter([i] * len(first[i]), first[i], second[i])
                for x, y in zip(first[i], second[i]):
                    self.assertAlmostEqual(x, y, -100)
            plt.title(t)
            plt.savefig('.' + sep + 'pdf' + sep + t.replace(' ', '_') + '.pdf')
            plt.close()
コード例 #2
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
    def test_statistics(self):
        producer = GaussEvolutionProducer(self.process)
        consumer = StatisticsConsumer(statistics=_MultiStatistics)
        stats = Engine(producer, consumer).run(self.grid, self.path)

        for p, s in stats:
            for pm, sm in zip(self.process.mean(p), s.mean):
                self.assertAlmostEqual(pm, sm, self.places)
            for pv, sv in zip(self.process.variance(p), s.variance):
                self.assertAlmostEqual(pv, sv, self.places)
コード例 #3
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
    def test_statistics(self):
        producer = GaussEvolutionProducer(self.process)
        consumer = StatisticsConsumer(func=self.eval)
        stats = Engine(producer, consumer).run(self.grid, self.path)

        for p, s in stats:
            self.assertAlmostEqual(self.process.mean(p), s.mean, self.places)
            # self.assertAlmostEqual(self.process.mean(p), s.median, self.places)
            self.assertAlmostEqual(self.process.variance(p), s.variance,
                                   self.places)
コード例 #4
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
    def test_statistics(self):
        producer = GaussEvolutionProducer(self.process)
        consumer = StatisticsConsumer(lambda s: s.value[0])
        stats = Engine(producer, consumer).run(self.grid, 50000)

        for p, s in stats:
            # print p, self.process.mean(p), self.process.variance(p), '\n', s
            self.assertAlmostEqual(self.process.mean(p), s.mean, self.places)
            self.assertAlmostEqual(self.process.mean(p), s.median, self.places)
            self.assertAlmostEqual(self.process.variance(p), s.variance,
                                   self.places)
コード例 #5
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
    def test_random_statistics(self):
        for d in range(2, 4, 2):
            process = self.process.__class__.random(d)
            producer = GaussEvolutionProducer(process)
            consumer = StatisticsConsumer(statistics=_MultiStatistics)
            stats = Engine(producer, consumer).run(self.grid, self.path)

            msg = '\ntransition matrix:\n' + str(process._transition_matrix)
            msg += '\nstart distribution:\n' + str(process.start)
            for p, s in stats:
                for pm, sm in zip(process.mean(p), s.mean):
                    self.assertAlmostEqual(
                        pm, sm, self.places,
                        'mean at %d: %f vs. %f' % (p, pm, sm) + msg)
                for pv, sv in zip(process.variance(p), s.variance):
                    self.assertAlmostEqual(
                        pv, sv, self.places,
                        'variance t %d: %f vs. %f' % (p, pv, sv) + msg)
コード例 #6
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
 def test_mean(self):
     start, drift, vol, time = 1., 0.1, 0.02, 1.
     expected = start * exp((drift + 0.5 * vol**2) * time)
     process = GeometricBrownianMotion(drift, vol, start)
     e = Engine(GaussEvolutionProducer(process), StatisticsConsumer())
     mean = list()
     median = list()
     variance = list()
     for seed in range(100):
         d, r = e.run(grid=[0., time], seed=seed, num_of_paths=5000)[-1]
         mean.append(r.mean)
         median.append(r.median)
         variance.append(r.variance)
     self.assertTrue(min(mean) <= expected <= max(mean))
     self.assertTrue(min(median) <= expected <= max(median))
     self.assertTrue(min(mean) <= process.mean(time) <= max(mean))
     self.assertTrue(
         min(variance) <= process.variance(time) <= max(variance))
コード例 #7
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
 def test_3d_plot(self):
     producer = GaussEvolutionProducer(self.process)
     consumer = TimeWaveConsumer(lambda s: s.value[0])
     Engine(producer, consumer).run(self.grid, 5000)
     plot_timewave_result(consumer.result, '3d-' + str(self.process),
                          '.' + sep + 'pdf')
コード例 #8
0
ファイル: unittests.py プロジェクト: fagan2888/timewave
 def test_2d_plot(self):
     producer = GaussEvolutionProducer(self.process)
     consumer = Consumer(lambda s: s.value[0])
     Engine(producer, consumer).run(self.grid, 500)
     plot_consumer_result(consumer.result, consumer.grid,
                          '2d-' + str(self.process), '.' + sep + 'pdf')