Files
pandas-ta/tests/test_indicator_statistics.py
T
2019-02-28 10:40:19 -08:00

99 lines
3.0 KiB
Python

from .context import pandas_ta
from .data import sample_data, CORRELATION_THRESHOLD, VERBOSE
from unittest import TestCase, skip
import pandas.util.testing as pdt
from pandas import DataFrame, Series
import talib as tal
class TestStatistics(TestCase):
@classmethod
def setUpClass(cls):
cls.data = sample_data
cls.open = cls.data['open']
cls.high = cls.data['high']
cls.low = cls.data['low']
cls.close = cls.data['close']
cls.volume = cls.data['volume']
@classmethod
def tearDownClass(cls):
del cls.data
del cls.open
del cls.high
del cls.low
del cls.close
del cls.volume
def setUp(self):
self.stats = pandas_ta.statistics
def tearDown(self):
del self.stats
def test_kurtosis(self):
kurtosis = self.stats.kurtosis(self.close)
self.assertIsInstance(kurtosis, Series)
self.assertEqual(kurtosis.name, 'KURT_30')
def test_mad(self):
mad = self.stats.mad(self.close)
self.assertIsInstance(mad, Series)
self.assertEqual(mad.name, 'MAD_30')
def test_median(self):
median = self.stats.median(self.close)
self.assertIsInstance(median, Series)
self.assertEqual(median.name, 'MEDIAN_30')
def test_quantile(self):
quantile = self.stats.quantile(self.close)
self.assertIsInstance(quantile, Series)
self.assertEqual(quantile.name, 'QTL_30_0.5')
def test_skew(self):
skew = self.stats.skew(self.close)
self.assertIsInstance(skew, Series)
self.assertEqual(skew.name, 'SKEW_30')
def test_stdev(self):
stdev = self.stats.stdev(self.close)
self.assertIsInstance(stdev, Series)
self.assertEqual(stdev.name, 'STDEV_30')
try:
tal_stdev = tal.STDDEV(self.close, 30)
pdt.assert_series_equal(stdev, tal_stdev, check_names=False)
except AssertionError as ae:
try:
col = 'corr'
corr = pandas_ta.utils.df_error_analysis(stdev, tal_stdev, col=col)
self.assertGreater(corr, CORRELATION_THRESHOLD)
except Exception as ex:
print(f"\n [!] {stdev.name}['{col}']: {ex}")
def test_variance(self):
variance = self.stats.variance(self.close)
self.assertIsInstance(variance, Series)
self.assertEqual(variance.name, 'VAR_30')
try:
tal_variance = tal.VAR(self.close, 30)
pdt.assert_series_equal(variance, tal_variance, check_names=False)
except AssertionError as ae:
try:
col = 'corr'
corr = pandas_ta.utils.df_error_analysis(variance, tal_variance, col=col)
self.assertGreater(corr, CORRELATION_THRESHOLD)
except Exception as ex:
print(f"\n [!] {variance.name}['{col}']: {ex}")
def test_zscore(self):
zscore = self.stats.zscore(self.close)
self.assertIsInstance(zscore, Series)
self.assertEqual(zscore.name, 'Z_30')