Trading at Alpaca





Kerry Back

Create alpaca account

  • After logging in to Alpaca, you DO NOT need to enter name, address, etc. - that is only for real trading accounts.
  • By clicking the Overview icon on the left toolbar, you should get to the screen on the following slide.
  • Click on API Keys, then Regenerate to see your key and your secret key. Copy and save them somewhere.

Install alpaca-py

Connect to alpaca

from alpaca.trading.client import TradingClient
from alpaca.trading.requests import MarketOrderRequest
from alpaca.trading.enums import OrderSide, TimeInForce

KEY = "your_key"
SECRET_KEY = "your_secret_key"

trading_client = TradingClient(KEY, SECRET_KEY, paper=True)

Buy AAPL

order = MarketOrderRequest(
    symbol="AAPL",
    qty=10,
    side=OrderSide.BUY,
    time_in_force=TimeInForce.DAY
    )
_ = trading_client.submit_order(order)

Short TSLA

order = MarketOrderRequest(
    symbol="TSLA",
    qty=5,
    side=OrderSide.SELL,
    time_in_force=TimeInForce.DAY
    )
_ = trading_client.submit_order(order)

Check your positions

positions = trading_client.get_all_positions()
positions
[{   'asset_class': <AssetClass.US_EQUITY: 'us_equity'>,
     'asset_id': UUID('b0b6dd9d-8b9b-48a9-ba46-b9d54906e415'),
     'avg_entry_price': '135.78',
     'change_today': '0.0028831226436017',
     'cost_basis': '1357.8',
     'current_price': '135.66',
     'exchange': <AssetExchange.NASDAQ: 'NASDAQ'>,
     'lastday_price': '135.27',
     'market_value': '1356.6',
     'qty': '10',
     'side': <PositionSide.LONG: 'long'>,
     'symbol': 'AAPL',
     'unrealized_intraday_pl': '-1.2',
     'unrealized_intraday_plpc': '-0.000883782589483',
     'unrealized_pl': '-1.2',
     'unrealized_plpc': '-0.000883782589483'},
 {   'asset_class': <AssetClass.US_EQUITY: 'us_equity'>,
     'asset_id': UUID('8ccae427-5dd0-45b3-b5fe-7ba5e422c766'),
     'avg_entry_price': '130.702',
     'change_today': '0.02689313517339',
     'cost_basis': '-653.51',
     'current_price': '130.59',
     'exchange': <AssetExchange.NASDAQ: 'NASDAQ'>,
     'lastday_price': '127.17',
     'market_value': '-652.95',
     'qty': '-5',
     'side': <PositionSide.SHORT: 'short'>,
     'symbol': 'TSLA',
     'unrealized_intraday_pl': '0.56',
     'unrealized_intraday_plpc': '0.000856911141375',
     'unrealized_pl': '0.56',
     'unrealized_plpc': '0.000856911141375'}]

Check your account

account = trading_client.get_account()
account
{   'account_blocked': False,
    'account_number': 'PA3BI4KQX6FH',
    'accrued_fees': '0',
    'buying_power': '197989.32',
    'cash': '99295.71',
    'created_at': datetime.datetime(2023, 1, 20, 18, 4, 35, 591434, tzinfo=datetime.timezone.utc),
    'crypto_status': <AccountStatus.ACTIVE: 'ACTIVE'>,
    'currency': 'USD',
    'daytrade_count': 0,
    'daytrading_buying_power': '0',
    'equity': '99999.41',
    'id': UUID('66d46780-4b23-4d93-a276-ec081964cc5d'),
    'initial_margin': '1004.75',
    'last_equity': '100000',
    'last_maintenance_margin': '0',
    'long_market_value': '1356.6',
    'maintenance_margin': '602.85',
    'multiplier': '2',
    'non_marginable_buying_power': '97989.3',
    'pattern_day_trader': False,
    'pending_transfer_in': '0',
    'pending_transfer_out': None,
    'portfolio_value': '99999.41',
    'regt_buying_power': '197989.32',
    'short_market_value': '-652.9',
    'shorting_enabled': True,
    'sma': '0',
    'status': <AccountStatus.ACTIVE: 'ACTIVE'>,
    'trade_suspended_by_user': False,
    'trading_blocked': False,
    'transfers_blocked': False}

Portfolio value

account.equity
'99999.41'