Saltar al contenido principal

Acciones tokenizadas (xStocks)

Las acciones tokenizadas de Skipo (NVDASPV, TSLASPV, AMDSPV, GLDSPV…) son activos rebasing. La cantidad liquidada nunca se mueve; las acciones corporativas —reinversión de dividendos, splits, splits inversos— se expresan subiendo un multiplicador:

acciones subyacentes = cantidad liquidada × multiplicador
precio por acción = tasa / multiplicador

Las dos representaciones describen el mismo dinero: cantidad × tasa da el mismo importe en la moneda de cotización en ambos casos. El rebase afecta solo a la pata base — un mercado xStock es <ACCIÓN>-CLP o <ACCIÓN>-USDT, así que la otra pata es fiat o una stablecoin.

assetFormat

Los endpoints de órdenes y fills aceptan un parámetro assetFormat:

ValorQué devuelve
rebased (por defecto)Importes en términos de la acción subyacente — lo que un tenedor considera "sus acciones".
baseImportes en términos de los tokens SPV liquidados — lo que se movió en cadena y en el libro contable.
GET /v2/fills?market=NVDASPV-CLP # rebased (por defecto)
GET /v2/fills?market=NVDASPV-CLP&assetFormat=base # cifras liquidadas
El valor por defecto es rebased

Es un cambio deliberado respecto al comportamiento anterior, que devolvía base. Un inversor piensa en acciones, no en tokens SPV, y es lo que hacen las plataformas comparables (el rebase_multiplier de Kraken tiene el mismo valor por defecto). Si tu integración depende de las cifras liquidadas, pide assetFormat=base explícitamente.

En los demás activos no cambia nada: el multiplicador es 1 y ambos modos son idénticos.

El campo multiplier

Órdenes y fills publican el factor aplicado:

{
"id": "1096473",
"baseAsset": "NVDASPV",
"baseAmount": "10.000658218334353",
"rate": "18499.8",
"multiplier": "1.0000658218334353"
}

Con él puedes reconstruir la otra representación sin pedir de nuevo:

  • base → rebased: baseAmount × multiplier, rate ÷ multiplier
  • rebased → base: baseAmount ÷ multiplier, rate × multiplier

Esto es lo que permite conciliar un importe de la API contra un saldo en cadena.

El multiplicador es puntual en el tiempo

Es la parte que más importa y la más fácil de equivocar:

El factor que publicamos es el que estaba vigente en el momento de ese fill, leído de la propia fila. Nunca se recalcula con el factor de hoy.

Una acción corporativa cambia el factor hacia adelante; no cambia lo que entregó una operación pasada. Aplicar el multiplicador de hoy a un fill del año pasado reescribe la historia: si un activo hace un split 10:1, todo tu historial pasado aparecería multiplicado por diez.

Es la regla 3 de la guía de la extensión Scaled UI Amount de Solana: un importe histórico debe mostrarse con el multiplicador vigente cuando ocurrió la transacción.

multiplier: "1" no significa "no es una acción tokenizada"

Un factor de exactamente 1 es simplemente un factor que todavía no se ha movido — TSLASPV está hoy en 1. No lo uses para clasificar activos. La clase de activo es dato de referencia y se consulta en GET /v2/assets/{assetSymbol}.

El libro contable no acepta assetFormat

GET /v2/ledger expone deliberadamente los importes liquidados, sin assetFormat.

El libro es el registro de doble entrada de lo que realmente se movió, y hoy sus asientos no llevan el multiplicador vigente en el momento del apunte. Honrar assetFormat obligaría a resolver el factor en vivo, que es exactamente el error de reescritura descrito arriba. Preferimos una cifra correcta y sin escalar a una cifra escalada y potencialmente falsa.

Para ver un fill en términos de acciones, úsalo desde /v2/fills, que sí lleva el factor de su momento.