Esempio n. 1
0
 def test_fromfuncs(self):
     _vol_ave_int = 2
     _sma_window = 4
     _skipatstart = _sma_window - 1
     _n_sess = 3
     _smafunc = pn.expand(pn.tech.sma, 'Adj Close')
     _funcs = [
             pn.decorate(partial(pn.tech.ratio_to_ave, _vol_ave_int),
                 title='MyRelVol'),
             pn.decorate(partial(_smafunc, window=_sma_window), title='MySMA')]
     _features = pn.data.feat.fromfuncs(_funcs, _n_sess, self.equity_data, 
             skipatstart=_skipatstart) 
     self.assertEqual(len(_features.index), len(self.equity_data.index) - _n_sess - _skipatstart + 1)
     for i in range(len(_features.index)):
         self.assertAlmostEqual(_features.iloc[i, 0], 1.)
         self.assertEqual(_features.index[i], self.equity_data.index[i + _n_sess + _skipatstart - 1])
         for j in range(_n_sess):
             # relative volumes all between 1.0 and 2.0
             self.assertTrue(_features.iloc[i, j + 1] < 2.)
             self.assertTrue(_features.iloc[i, j + 1] > 1.)
             # SMAs are means of values like 4, 6, 8, 10
             self.assertAlmostEqual(_features.iloc[i, j + _n_sess + 1], 1. + _sma_window + 2. * (i + j)) 
         # properties of relative volumes
         if i >= 1:
             # strictly decreasing
             self.assertTrue(_features.iloc[i, 1] < _features.iloc[i - 1, 1])
             # columns match with offset
             self.assertAlmostEqual(_features.iloc[i, 1], _features.iloc[i - 1, 2])
             self.assertAlmostEqual(_features.iloc[i, 2], _features.iloc[i - 1, 3])
Esempio n. 2
0
 def test_labeledfeatures(self):
     _n_featsess = 2
     _ave_int = 3
     _pred_int = 1
     _featfuncs = []
     # growth and relative volume functions
     _featfuncs.append(
         pn.decorate(partial(pn.tech.growth, selection='Adj Close'),
                     title='G'))
     _featfuncs.append(
         pn.decorate(partial(pn.tech.ratio_to_ave, _ave_int), title='V'))
     _featfunc = pn.decorate(
         partial(pn.data.feat.fromfuncs,
                 _featfuncs,
                 _n_featsess,
                 skipatstart=_ave_int), _ave_int + _n_featsess - 1)
     _labfunc = pn.decorate(
         partial(pn.data.lab.growth, _pred_int, 'Adj Close'), _pred_int)
     features, labels = pn.data.labeledfeatures(self.equity_data, _featfunc,
                                                _labfunc)
     self.assertEqual(features.values.shape[0], labels.values.shape[0])
     self.assertEqual(features.values.shape[1], 5)
     for i in range(1, len(features.index)):
         self.assertAlmostEqual(features.loc[:, '-1 G'].values[i],
                                features.loc[:, '0 G'].values[i - 1])
         self.assertAlmostEqual(features.loc[:, '-1 V'].values[i],
                                features.loc[:, '0 V'].values[i - 1])
     for i in range(5):
         self.assertAlmostEqual(features.loc[:, '0 G'].values[i],
                                (i + 5.) / (i + 4.))
         self.assertAlmostEqual(features.loc[:, '0 V'].values[i],
                                (2. * i + 9.) / (2. * i + 5.))
         self.assertAlmostEqual(labels.values[i], (i + 6.) / (i + 5.))
Esempio n. 3
0
 def test_decorate(self):
     def _f():
         return 0, 1
     self.assertEqual(pn.decorate(_f, 2, 3)(), (0, 1, 2, 3))
     self.assertEqual(pn.decorate(lambda x: x * 2, 0)(3), (6, 0))
     self.assertEqual(pn.decorate(lambda x: x, 4, 5)('foo'), ('foo', 4, 5))
     self.assertEqual(pn.decorate(_f, 'foo')(), (0, 1, 'foo'))
     _g = pn.decorate(_f, 2, foo='bar')
     self.assertEqual(_g.foo, 'bar')
     self.assertFalse(hasattr(_f, 'foo'))
     self.assertEqual(_g(), (0, 1, 2))
Esempio n. 4
0
    def test_decorate(self):
        def _f():
            return 0, 1

        self.assertEqual(pn.decorate(_f, 2, 3)(), (0, 1, 2, 3))
        self.assertEqual(pn.decorate(lambda x: x * 2, 0)(3), (6, 0))
        self.assertEqual(pn.decorate(lambda x: x, 4, 5)('foo'), ('foo', 4, 5))
        self.assertEqual(pn.decorate(_f, 'foo')(), (0, 1, 'foo'))
        _g = pn.decorate(_f, 2, foo='bar')
        self.assertEqual(_g.foo, 'bar')
        self.assertFalse(hasattr(_f, 'foo'))
        self.assertEqual(_g(), (0, 1, 2))
Esempio n. 5
0
 def test_labeledfeatures(self):
     _n_featsess = 2
     _ave_int = 3
     _pred_int = 1
     _featfuncs = []
     # growth and relative volume functions
     _featfuncs.append(pn.decorate(partial(pn.tech.growth, selection='Adj Close'), title='G'))
     _featfuncs.append(pn.decorate(partial(pn.tech.ratio_to_ave, _ave_int), title='V'))
     _featfunc = pn.decorate(partial(pn.data.feat.fromfuncs, _featfuncs, _n_featsess, skipatstart=_ave_int),
             _ave_int + _n_featsess - 1)
     _labfunc = pn.decorate(partial(pn.data.lab.growth, _pred_int, 'Adj Close'), _pred_int)
     features, labels = pn.data.labeledfeatures(self.equity_data, _featfunc, _labfunc)
     self.assertEqual(features.values.shape[0], labels.values.shape[0])
     self.assertEqual(features.values.shape[1], 5)
     for i in range(1, len(features.index)):
         self.assertAlmostEqual(features.loc[:, '-1 G'].values[i], 
                 features.loc[:, '0 G'].values[i - 1])
         self.assertAlmostEqual(features.loc[:, '-1 V'].values[i], 
                 features.loc[:, '0 V'].values[i - 1])
     for i in range(5):
         self.assertAlmostEqual(features.loc[:, '0 G'].values[i], (i + 5.) / (i + 4.))
         self.assertAlmostEqual(features.loc[:, '0 V'].values[i], (2. * i + 9.) / (2. * i + 5.))
         self.assertAlmostEqual(labels.values[i], (i + 6.) / (i + 5.))