Stocks
Portfolio
Obtener las posiciones de acciones, resumen del portafolio e historial de operaciones del usuario.
GET /stocks/portfolio
Retorna las posiciones actuales del usuario en acciones, un resumen del portafolio con valores de mercado y ganancias/pérdidas no realizadas, y el historial de operaciones recientes.
Autenticación
Bearer Token en el header Authorization.
Authorization: Bearer {tu-token}Request
curl -X GET https://api.qvapay.com/stocks/portfolio \
-H "Authorization: Bearer {tu-token}"Parámetros de Query
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
page | number | No | Página del historial de operaciones. Por defecto: 1 |
take | number | No | Cantidad de operaciones por página. Por defecto: 20, máximo: 50 |
Response
{
"success": true,
"data": {
"positions": [
{
"id": "1",
"symbol": "AAPL",
"quantity": 1.279832,
"avg_cost": 175.40,
"current_price": 178.52,
"market_value": 228.48,
"cost_basis": 224.49,
"unrealized_pnl": 3.99,
"unrealized_pnl_percent": 1.78
}
],
"summary": {
"total_market_value": 228.48,
"total_cost_basis": 224.49,
"total_unrealized_pnl": 3.99,
"total_unrealized_pnl_percent": 1.78,
"market_open": true
},
"trades": [
{
"id": "1",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"symbol": "AAPL",
"type": "buy",
"quantity": 0.279832,
"market_price": 178.25,
"effective_price": 178.68,
"spread_percent": 0.24,
"fee_amount": 0.25,
"total_amount": 50.25,
"realized_pnl": null,
"after_hours": false,
"created_at": "2025-03-17T15:30:00.000Z"
}
],
"pagination": {
"page": 1,
"take": 20
}
}
}Campos de posiciones
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID de la posición |
symbol | string | Símbolo bursátil |
quantity | number | Cantidad de acciones en posesión |
avg_cost | number | Costo promedio de adquisición por acción |
current_price | number | Precio actual de mercado |
market_value | number | Valor de mercado actual de la posición |
cost_basis | number | Costo base total de la posición |
unrealized_pnl | number | Ganancia/pérdida no realizada en USD |
unrealized_pnl_percent | number | Ganancia/pérdida no realizada en porcentaje |
Campos de resumen
| Campo | Tipo | Descripción |
|---|---|---|
total_market_value | number | Valor total de mercado de todas las posiciones |
total_cost_basis | number | Costo base total de todas las posiciones |
total_unrealized_pnl | number | Ganancia/pérdida no realizada total en USD |
total_unrealized_pnl_percent | number | Ganancia/pérdida no realizada total en porcentaje |
market_open | boolean | Indica si el mercado está abierto actualmente |
Campos de operaciones
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID de la operación |
uuid | string | UUID único de la operación |
symbol | string | Símbolo de la acción |
type | string | Tipo de operación: buy o sell |
quantity | number | Cantidad de acciones operadas |
market_price | number | Precio de mercado al momento de la operación |
effective_price | number | Precio efectivo (con spread) |
spread_percent | number | Porcentaje de spread aplicado |
fee_amount | number | Comisión cobrada |
total_amount | number | Monto total de la operación |
realized_pnl | number/null | Ganancia/pérdida realizada (solo en ventas) |
after_hours | boolean | Si la operación fue fuera de horario |
created_at | string | Fecha y hora de la operación (ISO 8601) |
Errores
| Código | Descripción |
|---|---|
401 | No autenticado |
429 | Demasiadas solicitudes |
500 | Error al obtener el portafolio |