forked from omergertel/pyformance
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest__moving_average.py
82 lines (63 loc) · 3.07 KB
/
test__moving_average.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from pyformance.stats.moving_average import ExpWeightedMovingAvg
from tests import TimedTestCase
class EWMATests(TimedTestCase):
def test_one_minute_EWMA_five_sec_tick(self):
self.ewma = ExpWeightedMovingAvg(1, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.22072766, 0.08120117, 0.02987224,
0.01098938, 0.00404277, 0.00148725,
0.00054713, 0.00020128, 0.00007405]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)
def test_five_minute_EWMA_five_sec_tick(self):
self.ewma = ExpWeightedMovingAvg(5, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.49123845, 0.40219203, 0.32928698,
0.26959738, 0.22072766, 0.18071653,
0.14795818, 0.12113791, 0.09917933]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)
def test_fifteen_minute_EWMA_five_sec_tick(self):
self.ewma = ExpWeightedMovingAvg(15, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.56130419, 0.52510399, 0.49123845,
0.45955700, 0.42991879, 0.40219203,
0.37625345, 0.35198773, 0.32928698]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)
def test_one_minute_EWMA_one_minute_tick(self):
self.ewma = ExpWeightedMovingAvg(1, 60, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.22072766, 0.08120117, 0.02987224,
0.01098938, 0.00404277, 0.00148725,
0.00054713, 0.00020128, 0.00007405]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)
def test_five_minute_EWMA_one_minute_tick(self):
self.ewma = ExpWeightedMovingAvg(5, 60, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.49123845, 0.40219203, 0.32928698,
0.26959738, 0.22072766, 0.18071653,
0.14795818, 0.12113791, 0.09917933]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)
def test_fifteen_minute_EWMA_one_minute_tick(self):
self.ewma = ExpWeightedMovingAvg(15, 60, clock=self.clock)
self.ewma.add(3)
self.clock.add(5)
self.ewma.tick()
for expected_rate in [0.6, 0.56130419, 0.52510399, 0.49123845,
0.45955700, 0.42991879, 0.40219203,
0.37625345, 0.35198773, 0.32928698]:
self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
self.clock.add(60)