示例#1
0
 def get_quote(symbol):
     assert symbol == 'SPY'
     return apca.Quote({
         'symbol': 'SPY',
         'last': 210,
         'last_timestamp': '2016-06-01T10:27:00-0400',
     })
示例#2
0
    def test_portfolio(self, tradeapi, symbol_lookup):
        api = tradeapi.REST()
        asset = self.asset_finder.retrieve_asset(1)
        ret_account = apca.Account({
            'cash': '5000.00',
            'portfolio_value': '7000.00'
        })
        api.get_account.return_value = ret_account
        ret_positions = [
            apca.Position({
                'symbol': 'SPY',
                'qty': '10',
                'cost_basis': '210.00',
            })
        ]
        api.list_positions.return_value = ret_positions
        ret_quotes = [
            apca.Quote({
                'symbol': 'SPY',
                'last': 210.05,
                'last_timestamp': '2017-06-01T10:03:03-0400',
            })
        ]
        api.list_quotes.return_value = ret_quotes
        symbol_lookup.return_value = asset
        broker = ALPACABroker('')
        portfolio = broker.portfolio

        assert portfolio.cash == float(ret_account.cash)

        account = broker.account
        assert account.buying_power == float(ret_account.cash)
        assert account.total_position_value == float(
            ret_account.portfolio_value) - float(ret_account.cash)

        positions = portfolio.positions
        assert positions[asset].cost_basis == float(
            ret_positions[0].cost_basis)
        assert positions[asset].last_sale_price == float(ret_quotes[0].last)

        portfolio = broker.portfolio
示例#3
0
    def test_get_spot_value(self, tradeapi):
        api = tradeapi.REST()

        dt = None  # dt is not used in real broker
        data_freq = 'minute'
        asset = self.asset_finder.retrieve_asset(1)
        bar = {
            'time': '2017-06-17T10:31:09-0400',
            'open': 103.0,
            'high': 103.5,
            'low': 102.5,
            'close': 103.1,
            'volume': 996
        }
        broker = ALPACABroker('')
        api.list_bars.return_value = [
            apca.AssetBars({
                'symbol': 'SPY',
                'bars': [bar],
            })
        ]

        quote = {
            'last': 103.8,
            'last_timestamp': '2017-06-17T10:31:13-0400',
        }
        api.list_quotes.return_value = [apca.Quote(quote)]

        price = broker.get_spot_value(asset, 'price', dt, data_freq)
        last_trade = broker.get_spot_value(asset, 'last_traded', dt, data_freq)
        open_ = broker.get_spot_value(asset, 'open', dt, data_freq)
        high = broker.get_spot_value(asset, 'high', dt, data_freq)
        low = broker.get_spot_value(asset, 'low', dt, data_freq)
        close = broker.get_spot_value(asset, 'close', dt, data_freq)
        volume = broker.get_spot_value(asset, 'volume', dt, data_freq)

        assert price == quote['last']
        assert last_trade == pd.Timestamp(quote['last_timestamp'])
        assert open_ == bar['open']
        assert high == bar['high']
        assert low == bar['low']
        assert close == bar['close']
        assert volume == bar['volume']

        assets = [asset]
        price = broker.get_spot_value(assets, 'price', dt, data_freq)[0]
        last_trade = broker.get_spot_value(assets, 'last_traded', dt,
                                           data_freq)[0]
        open_ = broker.get_spot_value(assets, 'open', dt, data_freq)[0]
        high = broker.get_spot_value(assets, 'high', dt, data_freq)[0]
        low = broker.get_spot_value(assets, 'low', dt, data_freq)[0]
        close = broker.get_spot_value(assets, 'close', dt, data_freq)[0]
        volume = broker.get_spot_value(assets, 'volume', dt, data_freq)[0]

        assert price == quote['last']
        assert last_trade == pd.Timestamp(quote['last_timestamp'])
        assert open_ == bar['open']
        assert high == bar['high']
        assert low == bar['low']
        assert close == bar['close']
        assert volume == bar['volume']