Skip to content

[Bug]: Crypto Demo: Not found for https://paper-api.alpaca.markets/v2/positions/BTC/USD #537

Closed
@jmccarey

Description

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

api_key = ""
secret_key = ""
paper = True 
trade_client = TradingClient(api_key=api_key, secret_key=secret_key, paper=paper, url_override=trade_api_url)



symbol = "BTC/USD"

# 404 response. API Error thrown 
position = trade_client.get_open_position(symbol_or_asset_id=symbol) 

# Also 404 response
trade_client.close_position( 
    symbol_or_asset_id = symbol,
    close_options = ClosePositionRequest(
        qty = "0.01",
    )
)

# Change the symbol to drop / and it's okay
symbol = "BTCUSD"

position = trade_client.get_open_position(symbol_or_asset_id=symbol) # 200

trade_client.close_position( # 200
    symbol_or_asset_id = symbol,
    close_options = ClosePositionRequest(
        qty = "0.01",
    )
)

# But the BTCUSD format doesn't work for historical data
# APIError: {"message":"invalid symbol: BTCUSD does not match ^[A-Z]+/[A-Z]+$"}
crypto_historical_data_client = CryptoHistoricalDataClient()

# get historical bars by symbol
# ref. https://docs.alpaca.markets/reference/cryptobars-1
now = datetime.now(ZoneInfo("America/New_York"))
req = CryptoBarsRequest(
    symbol_or_symbols = [symbol],
    timeframe=TimeFrame(amount = 1, unit = TimeFrameUnit.Hour), # specify timeframe
    start = now - timedelta(days = 1),                          # specify start datetime, default=the beginning of the current day.
    # end_date=None,                                        # specify end datetime, default=now
    limit = 2,                                               # specify limit
)
crypto_historical_data_client.get_crypto_bars(req).df

Expected Behavior

Ideally you could use the same symbol string for orders, positions, and historical data. That sounds like it could be an API change, but for now it could be good to update the demo.

SDK Version I encountered this issue in

alpaca-py 0.34.0

Steps To Reproduce

Run the provided code, or:

1. Setup a fresh crypto-trading-basic.ipynb
2. Run the notebook as normal. get_open_position(symbol_or_asset_id=symbol) and trade_client.close_position(symbol_or_asset_id = symbol...) raise API errors
3. Try symbol = "BTCUSD".  The notebook runs all the way until we access historical data. Then we get APIError: {"message":"invalid symbol: BTCUSD does not match ^[A-Z]+/[A-Z]+$"}

Filled out the Steps to Reproduce section?

  • I have entered valid steps to reproduce my issue or have attached a minimally reproducible case in code that shows my issue happening; and understand that without this my issue will be flagged as invalid and closed after 30 days.

Anything else?

No response

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions