> ## Documentation Index
> Fetch the complete documentation index at: https://docs.docta.com.ar/llms.txt
> Use this file to discover all available pages before exploring further.

# Contratos de dólar futuro

> Todos los contratos vigentes de dólar futuro de A3 (tickers ^DLR/[A-Z]{3}\d{2}$), ordenados por maturity_date ascendente, con el spot A3500. Tiempo real, sin demora. Con esta lista se arman el screener, la curva normal y la curva forward.

> [!NOTE]
>
> Lista todos los contratos vigentes de dólar futuro de A3 (Matba Rofex), ordenados por vencimiento, con precios, puntas, volumen, interés abierto y tasas implícitas, más el dólar mayorista A3500 de referencia. Con esta lista armás el screener, la curva normal y la curva forward. Requiere el scope `futures:read`.

## Qué contratos entran

Solo los tickers que cumplen `^DLR/[A-Z]{3}\d{2}$`, uno por vencimiento mensual (por ejemplo `DLR/NOV26`, `DLR/DIC26`, `DLR/ENE27`). El 29 de octubre de 2026 eran 14 contratos, de `DLR/OCT26` a `DLR/NOV27`. Quedan afuera dos casos:

* Los gemelos `M`, como `DLR/NOV26M`. Son un segundo book sobre el mismo vencimiento y duplicarían cada punto de la curva.
* `DLR/PF0`. Está en el segmento de dólar pero no tiene un vencimiento real, así que rompe las curvas.

## Tiempo real

Los datos son los del mercado en el momento de la llamada, sin la demora de \~20 minutos de bonos y sin caché propio en estas rutas. Dos llamadas seguidas pueden devolver precios distintos.

## Convenciones

* Las tasas y variaciones son decimales: `0.0172` = 1,72 %.
* Los precios están en ARS por dólar.
* `trade_volume`, `open_interest`, `bid_size` y `offer_size` se cuentan en contratos de USD 1.000. Pueden venir como float (`142615.0`).
* Las fechas van en `YYYY-MM-DD`. `operation_date` es ISO 8601 con offset, tal como llega del feed.
* Un campo sin dato para un contrato vuelve en `null`. Nunca se omite.
* `last_price` viene en `null` hasta que el contrato opera en la rueda. El 12 de noviembre de 2026 a las 11:00, 7 de los 13 contratos todavía no habían operado. Las tasas (`implied_rate`, `tna`, `tea`, `forward_tem`) llegan igual. Si necesitás un precio para ese contrato, usá `closing_price`.

## Ejemplo de Solicitud

```bash cURL theme={null}
curl -X GET "https://api.doctacapital.com.ar/api/v1/futures/instruments" \
  -H "Authorization: Bearer $DOCTA_TOKEN"
```

## Respuesta Exitosa

**spot** `object`

Dólar mayorista de referencia contra el que se calculan `implied_rate` y el primer `forward_tem`. Incluye `ticker` (`TC_OFICIAL_MAYORISTA`), `price` (cotización A3500 en ARS) y `date` (YYYY-MM-DD).

**count** `integer`

Cantidad de contratos vigentes.

**instruments** `array`

Contratos vigentes, ordenados por `maturity_date` ascendente.

**instruments\[].ticker** `string`

Ticker del contrato (ej., `DLR/NOV26`).

**instruments\[].maturity\_date** `string`

Vencimiento del contrato (YYYY-MM-DD).

**instruments\[].days\_to\_maturity** `integer | null`

Días al vencimiento.

**instruments\[].last\_price** `number | null`

Último precio operado.

**instruments\[].closing\_price** `number | null`

Último precio operado de la última rueda completa. Durante la rueda es el cierre de la rueda anterior y sirve de base para `variation`.

**instruments\[].variation** `number | null`

Variación del día: `last_price / closing_price - 1`, en decimal.

**instruments\[].trade\_volume** `number | null`

Contratos operados en la rueda.

**instruments\[].bid\_price** `number | null`

Mejor compra. `bid_size` es la cantidad de contratos a ese precio.

**instruments\[].offer\_price** `number | null`

Mejor venta. `offer_size` es la cantidad de contratos a ese precio.

**instruments\[].open\_interest** `number | null`

Interés abierto.

**instruments\[].implied\_rate** `number | null`

Tasa directa: `precio del contrato / dólar mayorista (A3500) - 1`, en decimal. Es la devaluación implícita hasta el vencimiento.

**instruments\[].tna** `number | null`

Tasa nominal anual, en decimal.

**instruments\[].tea** `number | null`

Tasa efectiva anual, en decimal.

**instruments\[].forward\_tem** `number | null`

Tasa forward entre este contrato y el anterior, efectiva mensual, en decimal. Para el primer contrato de la lista se calcula contra el A3500.

**instruments\[].operation\_date** `string | null`

Fecha y hora del último tick, en ISO 8601 con offset (ej., `2026-10-29T13:29:11.084000-03:00`).

## Armar las curvas

La API no calcula curvas. Las armás vos con `instruments`, que ya viene ordenado por `maturity_date`.

**1. Curva normal**

Un punto por contrato: en el eje X `maturity_date` (o `days_to_maturity`), en el eje Y `tea`, `tna` o `implied_rate`, según qué tasa quieras mostrar.

**2. Curva forward**

Mismo eje X, con `forward_tem` en el eje Y. Cada punto es la tasa mensual implícita entre el vencimiento anterior y ese contrato. El primer punto mide el tramo entre el A3500 de `spot` y el primer vencimiento.

**3. Futuros y bandas**

Pedí [`GET /api/v1/futures/tc-bands`](https://docs.docta.com.ar/api-reference/endpoint/futures-tc-bands) y graficá `lower_band` y `upper_band` por `date`. Encima, poné cada contrato como un punto con `maturity_date` en X y `last_price` en Y. Si `last_price` es `null`, usá `closing_price`. Sin `date_to`, las bandas llegan hasta el vencimiento del último contrato, así que cubren toda la curva.

El heatmap de event-guard usa esta misma lista: `variation` como color y `trade_volume` u `open_interest` como tamaño.

## Ejemplo de Respuesta Exitosa

```json Success theme={null}
{
  "spot": {
    "ticker": "TC_OFICIAL_MAYORISTA",
    "price": 1541.0,
    "date": "2026-10-29"
  },
  "count": 14,
  "instruments": [
    {
      "ticker": "DLR/NOV26",
      "maturity_date": "2026-11-30",
      "days_to_maturity": 32,
      "last_price": 1568.0,
      "closing_price": 1570.5,
      "variation": -0.0015918497293855305,
      "trade_volume": 142615.0,
      "bid_price": 1567.5,
      "bid_size": 11170.0,
      "offer_price": 1568.0,
      "offer_size": 1060.0,
      "open_interest": 1125435,
      "implied_rate": 0.01752109020116807,
      "tna": 0.1998499351070733,
      "tea": 0.21921110908860508,
      "forward_tem": 0.0172,
      "operation_date": "2026-10-29T14:41:44.647000-03:00"
    },
    {
      "ticker": "DLR/DIC26",
      "maturity_date": "2026-12-30",
      "days_to_maturity": 62,
      "last_price": 1596.5,
      "closing_price": 1599.0,
      "variation": -0.0015634771732332409,
      "trade_volume": 61204.0,
      "bid_price": 1596.0,
      "bid_size": 2310.0,
      "offer_price": 1596.5,
      "offer_size": 1480.0,
      "open_interest": 884215,
      "implied_rate": 0.0360155743024011,
      "tna": 0.21202717129639356,
      "tea": 0.23158049412222104,
      "forward_tem": 0.01817602040816335,
      "operation_date": "2026-10-29T14:41:58.296000-03:00"
    }
  ]
}
```


## OpenAPI

````yaml GET /api/v1/futures/instruments
openapi: 3.1.0
info:
  title: API de Docta
  description: >-
    API de mercado argentino: bonos (instrumentos, cashflows, curvas/yields),
    FCI (screener, series, performance, comparaciones y analytics de industria)
    y dólar futuro de A3 (contratos en tiempo real, velas diarias y bandas
    cambiarias).
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.doctacapital.com.ar
security: []
paths:
  /api/v1/futures/instruments:
    get:
      tags:
        - Dólar futuro
      description: >-
        Todos los contratos vigentes de dólar futuro de A3 (tickers
        ^DLR/[A-Z]{3}\d{2}$), ordenados por maturity_date ascendente, con el
        spot A3500. Tiempo real, sin demora. Con esta lista se arman el
        screener, la curva normal y la curva forward.
      parameters: []
      responses:
        '200':
          description: Contratos vigentes de dólar futuro
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FuturesInstrumentsResponse'
              example:
                spot:
                  ticker: TC_OFICIAL_MAYORISTA
                  price: 1541
                  date: '2026-10-29'
                count: 14
                instruments:
                  - ticker: DLR/NOV26
                    maturity_date: '2026-11-30'
                    days_to_maturity: 32
                    last_price: 1568
                    closing_price: 1570.5
                    variation: -0.0015918497293855305
                    trade_volume: 142615
                    bid_price: 1567.5
                    bid_size: 11170
                    offer_price: 1568
                    offer_size: 1060
                    open_interest: 1125435
                    implied_rate: 0.01752109020116807
                    tna: 0.1998499351070733
                    tea: 0.21921110908860508
                    forward_tem: 0.0172
                    operation_date: '2026-10-29T14:41:44.647000-03:00'
                  - ticker: DLR/DIC26
                    maturity_date: '2026-12-30'
                    days_to_maturity: 62
                    last_price: 1596.5
                    closing_price: 1599
                    variation: -0.0015634771732332409
                    trade_volume: 61204
                    bid_price: 1596
                    bid_size: 2310
                    offer_price: 1596.5
                    offer_size: 1480
                    open_interest: 884215
                    implied_rate: 0.0360155743024011
                    tna: 0.21202717129639356
                    tea: 0.23158049412222104
                    forward_tem: 0.01817602040816335
                    operation_date: '2026-10-29T14:41:58.296000-03:00'
        '401':
          description: Autenticación requerida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: 'Permisos insuficientes: requiere el scope futures:read'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Parámetros inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    FuturesInstrumentsResponse:
      type: object
      properties:
        spot:
          $ref: '#/components/schemas/FuturesSpot'
        count:
          type: integer
          description: Cantidad de contratos vigentes.
        instruments:
          type: array
          description: Contratos vigentes ordenados por maturity_date ascendente.
          items:
            $ref: '#/components/schemas/FutureContract'
      required:
        - spot
        - count
        - instruments
    Error:
      required:
        - type
        - title
        - status
        - detail
        - correlation_id
      type: object
      properties:
        type:
          description: El identificador del tipo de error
          type: string
          example: /errors/authentication-required
        title:
          description: Una breve descripción del error
          type: string
          example: Invalid client credentials
        status:
          description: El código de estado HTTP
          type: integer
          example: 401
        detail:
          description: Una descripción detallada del error
          type: string
          example: Invalid client credentials
        correlation_id:
          description: Un identificador único para rastrear esta solicitud de error
          type: string
          format: uuid
          example: 2eb07802-94de-468a-b70f-75a49f3e9516
    FuturesSpot:
      type: object
      description: >-
        Dólar mayorista de referencia (A3500) contra el que se calculan
        implied_rate y el primer forward_tem.
      properties:
        ticker:
          type: string
          description: Identificador del spot.
          example: TC_OFICIAL_MAYORISTA
        price:
          type:
            - number
            - 'null'
          description: Cotización del dólar mayorista A3500, en ARS.
        date:
          type:
            - string
            - 'null'
          format: date
          description: Fecha de la cotización (YYYY-MM-DD).
      required:
        - ticker
        - price
        - date
    FutureContract:
      type: object
      description: >-
        Contrato de dólar futuro de A3. Los campos sin dato vuelven en null,
        nunca se omiten.
      properties:
        ticker:
          type: string
          description: Ticker del contrato en A3 (Matba Rofex). Cumple ^DLR/[A-Z]{3}\d{2}$.
          example: DLR/NOV26
        maturity_date:
          type: string
          format: date
          description: Vencimiento del contrato (YYYY-MM-DD).
        days_to_maturity:
          type:
            - integer
            - 'null'
          description: Días al vencimiento.
        last_price:
          type:
            - number
            - 'null'
          description: Último precio operado, en ARS.
        closing_price:
          type:
            - number
            - 'null'
          description: Último precio operado de la última rueda completa, en ARS.
        variation:
          type:
            - number
            - 'null'
          description: last_price / closing_price - 1, en decimal.
        trade_volume:
          type:
            - number
            - 'null'
          description: Contratos operados en la rueda.
        bid_price:
          type:
            - number
            - 'null'
          description: Mejor precio de compra, en ARS.
        bid_size:
          type:
            - number
            - 'null'
          description: Cantidad de contratos a la mejor compra.
        offer_price:
          type:
            - number
            - 'null'
          description: Mejor precio de venta, en ARS.
        offer_size:
          type:
            - number
            - 'null'
          description: Cantidad de contratos a la mejor venta.
        open_interest:
          type:
            - number
            - 'null'
          description: Interés abierto.
        implied_rate:
          type:
            - number
            - 'null'
          description: >-
            Tasa directa: precio del contrato / dólar mayorista (A3500) - 1, en
            decimal.
        tna:
          type:
            - number
            - 'null'
          description: Tasa nominal anual, en decimal.
        tea:
          type:
            - number
            - 'null'
          description: Tasa efectiva anual, en decimal.
        forward_tem:
          type:
            - number
            - 'null'
          description: >-
            Tasa forward efectiva mensual entre este contrato y el anterior, en
            decimal. Para el primer contrato se calcula contra el A3500.
        operation_date:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Fecha y hora del último tick, ISO 8601 con offset, tal como llega
            del feed.
      required:
        - ticker
        - maturity_date
        - days_to_maturity
        - last_price
        - closing_price
        - variation
        - trade_volume
        - bid_price
        - bid_size
        - offer_price
        - offer_size
        - open_interest
        - implied_rate
        - tna
        - tea
        - forward_tem
        - operation_date
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.