Exemple #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")
Exemple #2
0
import csv
import matplotlib.pyplot as plt

from portfolio_creator.portfolio_creator import PortfolioCreator
from portfolio_creator.data_source import DataSource
from utilities.presenter import Presenter

portfolio = PortfolioCreator().create(DataSource())
unsorted_data = portfolio.percentages()
percentages = {}

sorted_names = sorted(unsorted_data, key=unsorted_data.__getitem__)
for k in sorted_names:
    percentages[k] = unsorted_data[k]

with open("percentages.csv", 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerow(['Symbol', 'Weight'])
    for symbol, percentage in percentages.items():
        writer.writerow([symbol, Presenter.decimal_as_percentage(percentage)])

plt.bar(range(len(percentages)), percentages.values(), align='center')
plt.xticks(range(len(percentages)), percentages.keys(), rotation=90)

plt.ylabel('Weight (% of Portfolio)')
plt.title('Asset Weights')

plt.show()