Exemple #1
0
def test_portfolio_balance(account_checking, account_savings, account_sp500,
                           asset_krw, asset_sp500):
    """Ensures a portfolio, which is essentially a collection of accounts,
    calculates its balance correctly.
    """
    portfolio = Portfolio()
    portfolio.base_asset = asset_krw
    portfolio.add_accounts(account_checking, account_savings, account_sp500)

    assert portfolio.balance(parse_date('2016-05-20')) == {}

    deposit(account_checking, asset_krw, 1500, parse_date('2016-05-01'))
    deposit(account_savings, asset_krw, 3000, parse_date('2016-05-01'))
    deposit(account_sp500, asset_sp500, 120, parse_date('2016-05-01'))

    assert portfolio.balance(parse_date('2016-05-20')) \
        == {asset_krw: 4500, asset_sp500: 120}

    deposit(account_savings, asset_krw, 4000, parse_date('2016-05-02'))
    deposit(account_savings, asset_krw, 5000, parse_date('2016-05-03'))

    assert portfolio.balance(parse_date('2016-05-20')) \
        == {asset_krw: 13500, asset_sp500: 120}

    balance_adjustment(account_savings, asset_krw, 10000,
                       parse_date('2016-05-04'))

    assert portfolio.balance(parse_date('2016-05-20')) \
        == {asset_krw: 11500, asset_sp500: 120}

    db.session.delete(portfolio)
    db.session.commit()
Exemple #2
0
def test_balance(account_checking, asset_krw, asset_usd):
    assert account_checking.balance() == {}

    deposit(account_checking, asset_krw, 1000, parse_date("2016-05-01"))
    assert account_checking.balance(parse_date("2016-05-19")) == {
        asset_krw: 1000
    }

    deposit(account_checking, asset_krw, -500, parse_date("2016-05-02"))
    assert account_checking.balance(parse_date("2016-05-19")) == {
        asset_krw: 500
    }

    deposit(account_checking, asset_usd, 25, parse_date("2016-05-03"))
    assert account_checking.balance(parse_date("2016-05-19")) == {
        asset_krw: 500,
        asset_usd: 25,
    }

    balance_adjustment(account_checking, asset_usd, 40,
                       parse_date("2016-05-04"))
    assert account_checking.balance(parse_date("2016-05-19")) == {
        asset_krw: 500,
        asset_usd: 40,
    }
Exemple #3
0
def test_balance(account_checking, asset_krw, asset_usd):
    assert account_checking.balance() == {}

    deposit(account_checking, asset_krw, 1000, parse_date('2016-05-01'))
    assert account_checking.balance(parse_date('2016-05-19')) \
        == {asset_krw: 1000}

    deposit(account_checking, asset_krw, -500, parse_date('2016-05-02'))
    assert account_checking.balance(parse_date('2016-05-19')) \
        == {asset_krw: 500}

    deposit(account_checking, asset_usd, 25, parse_date('2016-05-03'))
    assert account_checking.balance(parse_date('2016-05-19')) \
        == {asset_krw: 500, asset_usd: 25}

    balance_adjustment(account_checking, asset_usd, 40,
                       parse_date('2016-05-04'))
    assert account_checking.balance(parse_date('2016-05-19')) \
        == {asset_krw: 500, asset_usd: 40}
Exemple #4
0
def test_records(account_checking, asset_krw):
    with Transaction.create() as t:
        record = deposit(account_checking, asset_krw, 1000,
                         parse_date('2016-03-14'), t)

        # Make sure the record type has been set implictly
        assert RecordType.deposit == record.type

    with Transaction.create() as t:
        record = deposit(account_checking, asset_krw, -2000,
                         parse_date('2016-03-14'), t)

        # Make sure the record type has been set implictly
        assert RecordType.withdraw == record.type

    with Transaction.create() as t:
        record = balance_adjustment(account_checking, asset_krw, 3000,
                                    parse_date('2016-03-14'), t)

        # Make sure the record type has been set explicitly
        assert RecordType.balance_adjustment == record.type