Skip to content
Finance
Skill

/alpaca-trading

Trading API de Alpaca: órdenes, posiciones, cuenta. Paper trading y live trading de acciones, crypto y opciones.

BOOST
From plugin
gauss314-skills
25032 skills
Install
$ npx -y skills add gauss314/skills --skill alpaca-trading --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/alpaca-trading

Context preview

The summary Claude sees to decide when to auto-load this skill.

Trading API de Alpaca: órdenes, posiciones, cuenta. Paper trading y live trading de acciones, crypto y opciones.

SKILL.md

alpaca-trading.SKILL.md
name: alpaca-trading
description: "Trading API de Alpaca: órdenes, posiciones, cuenta. Paper trading y live trading de acciones, crypto y opciones."
license: MIT

Alpaca Trading — Trading API

API para trading de acciones, crypto y opciones. Soporta paper trading (gratis) y live trading.

**Base URLs:**

  • Paper: `https://paper-api.alpaca.markets`
  • Live: `https://api.alpaca.markets`
  • SDK: `pip install alpaca-py`

**Docs:** [docs.alpaca.markets](https://docs.alpaca.markets/us/docs/trading-api)

---

Autenticación

Obtener API Keys

1. Ir a [app.alpaca.markets](https://app.alpaca.markets) 2. Crear cuenta (paper trading es gratis) 3. Ir a "API Keys" → Generate New Keys

Configuración

import os
from alpaca.trading.client import TradingClient

# Para paper trading
API_KEY = os.getenv("APCA_API_KEY_ID")
SECRET_KEY = os.getenv("APCA_API_SECRET_KEY")
BASE_URL = "https://paper-api.alpaca.markets"  # Paper

# Para live trading
# BASE_URL = "https://api.alpaca.markets"

client = TradingClient(API_KEY, SECRET_KEY, paper=True)

**⚠️ NUNCA hardcodear keys. Usar variables de entorno.**

---

Rate Limits

| API | Límite | |-----|--------| | Orders | 200 requests/min | | Account/Positions | 200 requests/min | | Account Activities | 200 requests/min |

Recomendaciones

  • **Usar WebSocket para updates en tiempo real** — más eficiente que polling
  • **Cachear account/positions** — no consultar constantemente
  • **Implementar retry con exponential backoff** para 429 errors

---

Account

Obtener Información de Cuenta

account = client.get_account()
print(f"Buying Power: ${account.buying_power}")
print(f"Cash: ${account.cash}")
print(f"Portfolio Value: ${account.portfolio_value}")
print(f"Status: {account.status}")

Configuración de Cuenta

from alpaca.trading.requests import AccountConfigurationsRequest

config_request = AccountConfigurationsRequest(
    trade_confirmation_email=True,
    susi_transfer_email=True
)
client.update_account_configuration(config_request)

---

Assets

Listar Todos los Assets

from alpaca.trading.requests import GetAssetsRequest
from alpaca.trading.enums import AssetClass, AssetStatus

request = GetAssetsRequest(
    asset_class=AssetClass.US_EQUITY,
    status=AssetStatus.ACTIVE
)

assets = client.get_all_assets(request)

# Filtrar symbols tradables
tradable = [a for a in assets if a.tradable]
print(f"Assets tradables: {len(tradable)}")

Obtener Asset Específico

asset = client.get_asset("AAPL")
print(f"AAPL tradable: {asset.tradable}")
print(f"AAPL class: {asset.asset_class}")

---

Orders

Tipos de Órdenes

| Tipo | Descripción | |------|-------------| | `market` | Ejecuta al precio actual | | `limit` | Precio máximo (buy) o mínimo (sell) | | `stop` | Activa orden de mercado cuando alcanza stop_price | | `stop_limit` | Combina stop + limit | | `trailing_stop` | Stop relativo al precio |

Time in Force

| TIF | Descripción | |-----|-------------| | `day` | Solo para día actual | | `gtc` | Good Till Cancelled | | `opg` | Open at market open | | `cls` | Close at market close | | `ioc` | Immediate Or Cancel | | `fok` | Fill Or Kill |

Crear Orden de Market

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

order_request = MarketOrderRequest(
    symbol="AAPL",
    qty=10,
    side=OrderSide.BUY,
    time_in_force=TimeInForce.DAY
)

order = client.submit_order(order_request)
print(f"Order ID: {order.id}")
print(f"Status: {order.status}")

Crear Orden Limit

from alpaca.trading.requests import LimitOrderRequest

order_request = LimitOrderRequest(
    symbol="AAPL",
    qty=10,
    side=OrderSide.BUY,
    limit_price=150.00,  # Máximo a pagar
    time_in_force=TimeInForce.GTC
)

order = client.submit_order(order_request)

Crear Orden Stop

from alpaca.trading.requests import StopOrderRequest

order_request = StopOrderRequest(
    symbol="AAPL",
    qty=10,
    side=OrderSide.SELL,
    stop_price=145.00,  # Vende cuando caiga a este precio
    time_in_force=TimeInForce.GTC
)

Obtener Órdenes

# Todas las órdenes abiertas
open_orders = client.get_orders(status="open")
print(f"Órdenes abiertas: {len(open_orders)}")

# Órdenes filladas hoy
from datetime import datetime
filled_orders = client.get_orders(
    status="fill",
    start=datetime(2024, 1, 15)
)

# Orden por ID
order = client.get_order_by_id(order_id)

Cancelar Órdenes

# Cancelar una orden
client.cancel_order(order_id)

# Cancelar todas las órdenes abiertas
client.cancel_orders()

Reemplazar Orden

from alpaca.trading.requests import ReplaceOrderRequest

replace_request = ReplaceOrderRequest(
    limit_price=155.00,  # Nuevo precio límite
    qty=15               # Nueva cantidad
)
client.replace_order(order_id, replace_request)

---

Positions

Obtener Posiciones Abiertas

positions = client.get_all_positions()

for pos in positions:
    print(f"{pos.symbol}: {pos.qty} shares")
    print(f"  Avg Entry: ${pos.avg_entry_price}")
    print(f"  Market Value: ${pos.market_value}")
    print(f"  P/L: ${pos.unrealized_pl}")

Obtener Posición Específica

position = client.get_position("AAPL")
print(f"AAPL: {position.qty} shares @ ${position.avg_entry_price}")

Cerrar Posición

# Cerrar toda la posición
client.close_position("AAPL")

# Cerrar posición parcialmente (qty=5)
client.close_position("AAPL", qty=5)

Cerrar Todas las Posiciones

client.close_all_positions()

---

Options Trading

Trading Levels

| Level | Descripción | |-------|-------------| | 0 | Sin trading de opciones | | 1 | Covered calls, cash-secured puts | | 2 | Buy/sell calls y puts | | 3 | Spreads |

Obtener Option Contracts

from alpaca.trading.requests import GetOptionContrac
Read more
Ships withgauss314-skills

Open-source collection of skills compatible with the SKILL.md standard. Developed for the AI courses at UCEMA.

Get the whole plugin
Stats
250
Stars
35
Forks
Maintained
Maintenance
Python
Language
MIT
License
4mo ago
Last commit
4mo ago
Created
5h ago
Added

Repo: gauss314/skills

Other skills on gauss314-skills.