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)
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")
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)
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")
def test_to_json(self): x = test_portfolio() a = x.to_json() self.assertAlmostEqual(a["price"]["A"]["20140909"], 1255.5, places=5)
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)
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)
def test_ytd(self): portfolio = test_portfolio() p = portfolio.ytd(today=portfolio.index[-1]) self.assertEqual(p.index[0], pd.Timestamp("2015-01-01"))
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)