Example #1
0
    def test_performance(self):
        p = performance(ts, 262)
        g = read_series("performance_a.csv", parse_dates=False)

        for i in p.index[:-2]:
            self.assertAlmostEqual(float(p.ix[i]), float(g.ix[i]), places=10)

        for i in p.index[-2:]:
            self.assertEqual(p.ix[i], pd.Timestamp(g.ix[i]))
Example #2
0
    def test_volatility(self):
        s = read_series("ts.csv", parse_dates=True)
        vola = volatility(prices=s, com=32)
        vola_adj = volatility_adj_returns(prices=s,
                                          volatility=vola,
                                          winsor=4.2)
        osc = oscillator(prices=vola_adj.cumsum(), fast=32, slow=96)

        self.assertAlmostEqual(vola["2015-04-22"],
                               0.0017236025946574798,
                               places=10)
        self.assertAlmostEqual(vola_adj["2015-04-22"],
                               0.16504637852209397,
                               places=10)
        self.assertAlmostEqual(osc["2015-04-22"],
                               0.11165322157730379,
                               places=10)
Example #3
0
 def test_var(self):
     s = read_series("ts.csv", parse_dates=True)
     x = 100 * value_at_risk(s, alpha=0.99)
     self.assertAlmostEqual(x, 0.47550914363392316, places=10)
Example #4
0
 def test_cvar(self):
     s = read_series("ts.csv", parse_dates=True)
     x = 100 * conditional_value_at_risk(s, alpha=0.99)
     self.assertAlmostEqual(x, 0.51218385609772821, places=10)
Example #5
0
from pyutil.nav.nav import Nav
from unittest import TestCase
import pandas as pd

from test.config import read_series

nav = Nav(read_series("ts.csv", parse_dates=True))


class TestNav(TestCase):
    def test_drawdown(self):
        self.assertAlmostEqual(100 * nav.drawdown.max(), 5.7000575458488578, places=6)

    def test_performance(self):
        self.assertAlmostEqual(nav.performance(days=256)["Max Drawdown"], 5.7000575458488578, places=6)

    def test_monthly_table(self):
        self.assertAlmostEqual(100 * nav.monthlytable["Nov"][2013], 0.23233078558395626, places=5)

    def test_summary(self):
        self.assertAlmostEqual(nav.summary(days=256)[250]["Max Drawdown"], 3.9885756705666631, places=6)

    def test_ewm(self):
        self.assertAlmostEqual(100 * nav.ewm_volatility(days=250).values[-1], 2.7706672542422539, places=6)
        self.assertAlmostEqual(100 * nav.ewm_ret(days=250).values[-1], 6.0326401733122053, places=6)
        self.assertAlmostEqual(nav.ewm_sharpe(days=250).values[-1], 2.177323951144059, places=6)

    def test_adjust(self):
        x = Nav(pd.Series(data=[50, 60, 55]))
        y = x.adjust(100.0)#.series
        self.assertAlmostEqual(y[0], 100.0, places=4)
Example #6
0
 def test_drawdown(self):
     pdt.assert_series_equal(drawdown(ts), read_series("drawdown.csv", parse_dates=True), check_names=False)
Example #7
0
 def test_periods(self):
     y = period_returns(ts.pct_change(), offset=periods(ts.index[-1]))
     pdt.assert_series_equal(y, read_series("periods.csv", parse_dates=False), check_names=False)
Example #8
0
import pandas as pd

from unittest import TestCase
from test.config import read_series, read_frame

from pyutil.web.web import series2array, performance2json, frame2html
nav = read_series("nav.csv")


class TestWeb(TestCase):
    def test_series2array(self):
        x = series2array(nav)
        self.assertEqual(x[4][0], 1418770800000)
        self.assertEqual(x[4][1], 1.2875483261929406)

    def test_performance2dict(self):
        x = pd.read_json(performance2json(nav), orient="split", typ="series")
        self.assertEqual(x["Return"], "1.49")

    def test_frame2html(self):
        x = frame2html(read_frame("price.csv"), name="maffay")
        self.assertTrue(x)



Example #9
0
 def test_drawdown(self):
     pdt.assert_series_equal(drawdown(ts),
                             read_series("drawdown.csv", parse_dates=True),
                             check_names=False)
Example #10
0
import pandas as pd

from pycta.performance.drawdown import drawdown, drawdown_periods
from test.config import read_series
from unittest import TestCase

ts = read_series("ts.csv", parse_dates=True)

import pandas.util.testing as pdt


class TestDrawdown(TestCase):
    def test_drawdown(self):
        pdt.assert_series_equal(drawdown(ts),
                                read_series("drawdown.csv", parse_dates=True),
                                check_names=False)

    def test_periods(self):
        x = drawdown_periods(ts)
        self.assertEquals(x[pd.Timestamp("2014-06-20")], 217)
Example #11
0
 def test_periods_more(self):
     s = read_series("ts.csv", parse_dates=True).pct_change().dropna()
     y = period_returns(s, offset=periods(today=s.index[-1]))
     pdt.assert_series_equal(y,
                             read_series("periods.csv", parse_dates=False),
                             check_names=False)
Example #12
0
 def test_period_returns(self):
     p = periods(today=pd.Timestamp("2015-05-01"))
     s = read_series("ts.csv", parse_dates=True).pct_change().dropna()
     x = 100 * period_returns(returns=s, offset=p)
     self.assertAlmostEqual(x["Three Years"], 1.1645579858904798, places=10)
 def test_summary(self):
     pdt.assert_series_equal(s.summary().apply(str), read_series("summary.csv").apply(str))
from unittest import TestCase
import pandas as pd

from pycta.performance.nav_series import NavSeries
from test.config import read_series

import pandas.util.testing as pdt
s = NavSeries(read_series("ts.csv", parse_dates=True))


class TestNavSeries(TestCase):
    def test_pos_neg(self):
        self.assertEqual(s.negative_events, 164)
        self.assertEqual(s.positive_events, 176)
        self.assertEqual(s.events, 340)

    def test_summary(self):
        pdt.assert_series_equal(s.summary().apply(str), read_series("summary.csv").apply(str))

    def test_autocorrelation(self):
        self.assertAlmostEqual(s.autocorrelation, 0.070961153249184269, places=10)

    def test_mtd(self):
        self.assertAlmostEqual(100*s.mtd, 1.4133604922211385, places=10)

    def test_ytd(self):
        self.assertAlmostEqual(100*s.ytd, 2.1718996734564122, places=10)

    def test_monthly_table(self):
        self.assertAlmostEqual(100 * s.monthlytable["Nov"][2014], -0.19540358586001005, places=5)
Example #15
0
from unittest import TestCase
import pandas as pd

from pyutil.performance.drawdown import drawdown
from pyutil.performance.periods import period_returns, periods
from pyutil.performance.var import value_at_risk, conditional_value_at_risk
from pyutil.performance.month import monthlytable
from pyutil.performance.performance import performance

from test.config import read_series, read_frame

ts = read_series("ts.csv", parse_dates=True)

import pandas.util.testing as pdt


class TestPerformance(TestCase):
    def test_periods(self):
        y = period_returns(ts.pct_change(), offset=periods(ts.index[-1]))
        pdt.assert_series_equal(y, read_series("periods.csv", parse_dates=False), check_names=False)

    def test_drawdown(self):
        pdt.assert_series_equal(drawdown(ts), read_series("drawdown.csv", parse_dates=True), check_names=False)

    def test_var(self):
        var = value_at_risk(ts)
        cvar = conditional_value_at_risk(ts)

        self.assertAlmostEqual(var, 0.0040086450047240874, places=5)
        self.assertAlmostEqual(cvar, 0.0053542831745811131, places=5)
Example #16
0
 def test_table(self):
     s = read_series("ts.csv", parse_dates=True)
     pdt.assert_almost_equal(
         monthlytable(s), read_frame("monthtable.csv", parse_dates=False))
Example #17
0
from unittest import TestCase
from test.config import read_series

nav = read_series("nav.csv", parse_dates=True)

from pyutil.timeseries.timeseries import subsample, adjust, ytd, mtd, consecutive
import pandas as pd
import pandas.util.testing as pdt


class TestTimeseries(TestCase):
    def test_subsample_index(self):
        b = subsample(nav, day=15, incl=True)
        print(b)
        self.assertAlmostEqual(b[pd.Timestamp("2015-01-15")], 1.3028672967110184, places=5)

    def test_subsample_index2(self):
        b = subsample(nav, day=15, incl=True)
        self.assertEqual(len(b.index),3)

    def test_subsample_quarter(self):
        b = subsample(nav, day=15, incl=True).index[0:-1:1]
        self.assertEqual(b[1], pd.Timestamp("2015-01-15"))

    def test_adjust(self):
        x = adjust(nav.truncate(before="2015-01-01"))
        self.assertEqual(x.ix[x.index[0]], 1.0)

    def test_ytd(self):
        a = ytd(nav, today=pd.Timestamp("2014-05-07"))
        pdt.assert_series_equal(a, nav.truncate(before=pd.Timestamp("2014-01-01"), after=pd.Timestamp("2014-05-07")))