Exemple #1
0
def test_update_portfolio_home(home_currency: str, pair: Pair, exec_price: str,
        units: str, equity: str, exp_balance: str, exp_upl: str,
        exp_equity: str, TickerMock1: Ticker, TickerMock2: Ticker) -> None:
    port = Portfolio(TickerMock1, Queue(), Queue(), home_currency,
        ["GBPUSD", "EURUSD", "USDJPY"], Decimal(equity))
    port.execute_fill(FillEvent(
        ref='ref123',
        pair=pair,
        time=pd.Timestamp('2020-07-08 21:56:00'),
        units=Decimal(units),
        price=Decimal(exec_price),
        status='filled'
    ))
    
    for _pair in ['USDJPY']:
        bid = TickerMock2.prices[_pair]['bid']
        ask = TickerMock2.prices[_pair]['ask']

        TickerMock1.prices[_pair]["bid"] = bid
        TickerMock1.prices[_pair]["ask"] = ask

        # Create decimalised prices for inverted pair
        inv_pair, inv_bid, inv_ask = TickerMock2.invert_prices(_pair, bid, ask)
        TickerMock1.prices[inv_pair]["bid"] = inv_bid
        TickerMock1.prices[inv_pair]["ask"] = inv_ask

    port.update_portfolio(TickEvent(pair, pd.Timestamp('2020-07-08 21:56:00'),
        Decimal('111'), Decimal('222')))
    
    assert port.balance == Decimal(exp_balance)
    assert port.upl == Decimal(exp_upl)
    assert port.equity == Decimal(exp_equity)
Exemple #2
0
def test_invert_prices(pair: str, bid: Decimal, ask: Decimal, return_pair: str,
                       return_bid: Decimal, return_ask: Decimal) -> None:
    """ invert_prices should return inverted pair, bid and ask prices"""
    pairs = ['USDJPY', 'GBPUSD']
    ticker = Ticker(pairs)
    inv_pair, inv_bid, inv_ask = ticker.invert_prices(pair, bid, ask)
    assert inv_pair == return_pair
    assert inv_bid == return_bid
    assert inv_ask == return_ask
Exemple #3
0
def TickerMock2() -> Ticker:
    _pairs = ["GBPUSD", "EURUSD", "USDJPY"]
    _prices = {
        "GBPUSD": {"bid": Decimal("1.2541"), "ask": Decimal("1.2543")},
        "USDJPY": {"bid": Decimal("107.25"), "ask": Decimal("107.80")},
    }
    tm = Ticker(_pairs)
    # Create decimalaised prices for trade pair
    for pair, price in _prices.items():
        _bid, _ask = price['bid'], price['ask']
        tm.prices[pair]["bid"] = _bid
        tm.prices[pair]["ask"] = _ask
        # Create decimalised prices for inverted pair
        inv_pair, inv_bid, inv_ask = tm.invert_prices(pair, _bid, _ask)
        tm.prices[inv_pair]["bid"] = inv_bid
        tm.prices[inv_pair]["ask"] = inv_ask
    return tm