コード例 #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
def update_frequency():
    global portfolio
    request_body = UpdateFrequencyFormatter().format(request.form.to_dict())
    json_body = json.dumps(request_body)
    requests.post(Constants.DATA_URL + "/update_frequency", data=json_body)
    portfolio = PortfolioCreator().create(DataSource())
    return redirect("/accounts", code=302)
コード例 #3
0
def append_snapshot():
    global portfolio
    request_body = AppendSnapshotFormatter(EpochDateConverter()).format(
        request.form.to_dict())
    json_body = json.dumps(request_body)
    requests.post(Constants.DATA_URL + "/append_snapshot", data=json_body)
    portfolio = PortfolioCreator().create(DataSource())
    return redirect("/accounts", code=302)
コード例 #4
0
 def setUp(self):
     self.portfolio = PortfolioCreator().create(MockDataSource())
コード例 #5
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()
コード例 #6
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()
コード例 #7
0
from pylab import plot, xlabel, ylabel, title, show

from portfolio_creator.data_source import DataSource
from portfolio_creator.portfolio_creator import PortfolioCreator
from report.line_graph import LineGraph
from utilities.epoch_date_converter import EpochDateConverter

portfolio = PortfolioCreator().create(DataSource())
data = LineGraph(portfolio).net_worth_vs_time(
    "2003-01-01",
    EpochDateConverter().epoch_to_date())

plot(data["times"], data["values"])
xlabel('Date')
ylabel("Owner's Equity")
title("Owner's Equity vs. Time")
show()
コード例 #8
0
import datetime

from portfolio_analysis.portfolio_analyzer import PortfolioAnalyzer
from portfolio_creator.data_source import DataSource
from portfolio_creator.portfolio_creator import PortfolioCreator
from pylab import plot, xlabel, ylabel, title, show
from utilities.constants import Constants
from utilities.epoch_date_converter import EpochDateConverter

portfolio = PortfolioCreator().create(DataSource())
analyzer = PortfolioAnalyzer(portfolio)
number_of_days = round(Constants.DAYS_PER_YEAR)

times = []
debt = []

for day in range(0, number_of_days):
    historical_time = EpochDateConverter().date_to_epoch(
    ) - day * Constants.SECONDS_PER_DAY
    formatted_date = EpochDateConverter().epoch_to_date(historical_time)
    times.append(datetime.datetime.fromtimestamp(historical_time))
    debt.append(portfolio.liabilities_without_mortgage(formatted_date))

plot(times, debt)
xlabel('Date')
ylabel("Debt")
title("Debt vs. Time")
show()