コード例 #1
0
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")
コード例 #2
0
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()