def get_quote(symbol): assert symbol == 'SPY' return apca.Quote({ 'symbol': 'SPY', 'last': 210, 'last_timestamp': '2016-06-01T10:27:00-0400', })
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
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']