class PortfolioCreatorTestCase(unittest.TestCase): def setUp(self): self.portfolio = PortfolioCreator().create(MockDataSource()) def test_it_creates_a_portfolio(self): self.assertAlmostEqual(self.portfolio.total_value(), -1019.34) self.assertEqual(self.portfolio.percentages(), {"CASHX": 1.0}) self.assertEqual( self.portfolio.asset_classes(), { 'Annuities': 0.0, 'Cash Equivalents': 1.0, 'Commodities': 0.0, 'Equities': 0.0, 'Fixed Assets': 0.0, 'Fixed Income': 0.0, 'Real Estate': 0.0 }) def test_it_assigns_the_correct_names_to_the_accounts(self): accounts = self.portfolio.accounts first_account = accounts[0] self.assertEqual(first_account.name(), "Checking") second_account = accounts[1] self.assertEqual(second_account.name(), "Credit Card") third_account = accounts[2] self.assertEqual(third_account.name(), "Credit Card") def test_it_assigns_the_correct_update_frequencies_to_the_accounts(self): accounts = self.portfolio.accounts first_account = accounts[0] self.assertEqual(first_account.update_frequency(), 12) second_account = accounts[1] self.assertEqual(second_account.update_frequency(), 22) third_account = accounts[2] self.assertEqual(third_account.update_frequency(), 195) def test_it_assigns_the_correct_open_dates_to_the_accounts(self): accounts = self.portfolio.accounts first_account = accounts[0] self.assertEqual(first_account.open_date(), None) second_account = accounts[1] self.assertEqual(second_account.open_date(), "2000-11-12") third_account = accounts[2] self.assertEqual(third_account.open_date(), "2017-1-1") def test_it_assigns_the_correct_terms_to_the_accounts(self): accounts = self.portfolio.accounts first_account = accounts[0] self.assertEqual(first_account.term(), "none") second_account = accounts[1] self.assertEqual(second_account.term(), "medium") third_account = accounts[2] self.assertEqual(third_account.term(), "none")
import matplotlib.pyplot as plt from portfolio_creator.data_source import DataSource from portfolio_creator.portfolio_creator import PortfolioCreator portfolio = PortfolioCreator().create(DataSource()) unsorted_data = portfolio.asset_classes() asset_classes = {} sorted_names = sorted(unsorted_data, key=unsorted_data.__getitem__) for k in sorted_names: asset_classes[k] = unsorted_data[k] plt.bar(range(len(asset_classes)), asset_classes.values(), align='center') plt.xticks(range(len(asset_classes)), asset_classes.keys()) plt.ylabel('Weight (% of Portfolio)') plt.title('Asset Class Weights') plt.show()