Exemple #1
0
 def test_transaction_report(self):
     x = test_portfolio()
     p1 = x.iron_threshold(threshold=0.05)
     y = p1.transaction_report()
     yy = read_frame("report.csv", index_col=[0, 1])
     yy.index.names = [None, None]
     pdt.assert_frame_equal(y, yy)
Exemple #2
0
    def setUpClass(cls):
        cls.writer = writer("tmp_J32JFASDK", host="mongo")
        cls.reader = reader("tmp_J32JFASDK", host="mongo")

        # write assets into test database. Writing is slow!
        cls.writer.update_assets(frame=read_frame("price.csv", parse_dates=True))
        cls.writer.update_symbols(frame=read_frame("symbols.csv"))
        cls.writer.update_portfolio("test", test_portfolio(), group="test")
Exemple #3
0
    def test_portfolio(self):
        portfolio = test_portfolio()
        self.writer.update_symbols(frame=read_frame("symbols.csv", parse_dates=False))
        self.writer.update_portfolio("test", portfolio, "test-group")
        # self.archive.update_portfolio("test", portfolio, "test-group", n=10)
        g = self.reader.portfolios["test"]

        pdt.assert_frame_equal(portfolio.prices, g.prices)
        pdt.assert_frame_equal(portfolio.weights, g.weights)
Exemple #4
0
    def setUpClass(cls):
        cls.writer = writer("tmp_JKJFDAFJJKFD", host="mongo")
        cls.reader = reader("tmp_JKJFDAFJJKFD", host="mongo")

        # write assets into test database. Writing is slow!
        assets = read_frame("price.csv", parse_dates=True)

        for asset in assets:
            cls.writer.update_asset(asset, assets[asset])

        frame = read_frame("symbols.csv")
        cls.writer.update_symbols(frame)

        p = test_portfolio()
        cls.writer.update_portfolio("test", p, group="test", comment="test")
Exemple #5
0
 def test_to_json(self):
     x = test_portfolio()
     a = x.to_json()
     self.assertAlmostEqual(a["price"]["A"]["20140909"], 1255.5, places=5)
Exemple #6
0
 def test_iron(self):
     x = test_portfolio()
     p1 = x.iron_threshold(threshold=0.05)
     p2 = x.iron_time(rule="3M")
     self.assertEqual(len(p1.trading_days), 40)
     self.assertEqual(len(p2.trading_days), 10)
Exemple #7
0
 def test_state(self):
     p = test_portfolio()
     x = p.state
     self.assertAlmostEqual(x["Extrapolated"]["F"], 3.6564581863077144, places=10)
     self.assertAlmostEqual(x["Gap"]["A"], 0.042612879799229508, places=10)
Exemple #8
0
 def test_ytd(self):
     portfolio = test_portfolio()
     p = portfolio.ytd(today=portfolio.index[-1])
     self.assertEqual(p.index[0], pd.Timestamp("2015-01-01"))
Exemple #9
0
import pandas as pd
import numpy as np
import pandas.util.testing as pdt
from nose.tools import raises
from pyutil.portfolio.portfolio import Portfolio
from test.config import test_portfolio, read_frame
from unittest import TestCase

portfolio = test_portfolio()


class TestPortfolio(TestCase):
    def test_leverage(self):
        self.assertAlmostEqual(portfolio.leverage[pd.Timestamp("2013-07-19")], 0.25505730106555635, places=5)

    def test_nav(self):
        self.assertAlmostEqual(portfolio.nav.series[pd.Timestamp("2013-07-19")], 0.9849066065468487, places=5)

    def test_assets(self):
        self.assertSetEqual(set(portfolio.assets),
                            {'A', 'B', 'C', 'D', 'E', 'F', 'G'})

    def test_summary(self):
        # todo: include mtd, ytd
        self.assertAlmostEqual(portfolio.summary()[100]["Max Drawdown"], 1.7524809688827636, places=5)

    def test_index(self):
        pdt.assert_index_equal(portfolio.index, portfolio.prices.index)

    def test_asset_return(self):
        pdt.assert_frame_equal(portfolio.prices.pct_change(), portfolio.asset_returns)