PM API API Reference

El API PM (Portfolio Management) permite al usuario interactuar con el sistema de recomendaciones y acceder a la información de los portfolios.

Schemes: http
Version: 1

Portfolios

GET /v1/portfolios/search/

Búsqueda de portfolios a partir de un conjunto de propiedades pasadas por parámetro. En esta versión únicamente está implementada la búsqueda por metaportfolioId. Además, de manera opcional se permite filtrar por sabor.

Devuelve una lista de identificadores de portfolios.

Los tastes admitidos son: Validations, Recommended, Dirty Machine, Pure Machine Live, Pure Machine No Impacts, Pure Machine State Of The Art y Mix

Ejemplos:

/v1/portfolios/search/?metaportfolioId=1&taste=Validations /v1/portfolios/search/?metaportfolioId=1

metaportfolioId

Identificador de metaportfolio

type
integer
in
path
taste

Sabor

type
string
in
path
200 OK

Devuelve una lista con los identificadores de los portfolios que cumplen con las condiciones de búsqueda.

400 Bad Request

Error de validación:
· Los parámetros introducidos no son correctos.

POST /v1/portfolios/

Crea un nuevo portfolio a partir de los parámetros introducidos.

Ejemplo:

/v1/portfolios/

Devuelve OK si la petición ha sido recibida correctamente y se encuentra en proceso de creación de la cartera.

Parámetros de creación de la cartera

username

Nombre del usuario que realiza la petición

type
string
in
header
Request Example
{
  "type": "Labs",
  "name": "Capital Preservation Conservative.",
  "shortName": "CapitalPreservation.",
  "currency": "EUR",
  "launchAssets": 100000000.0255,
  "isHedge": true,
  "strategyId": 1,
  "riskLevel": "Medium",
  "universeType": "FixedIncome",
  "referenceIndexSId": 65789,
  "volatility": 0.5,
  "referencePortfolioLabsId": 12567,
  "fees": {
    "managementFee": 0.25,
    "performanceFee": 0.01,
    "performanceFeeMargin": 0.1,
    "performanceFeeReference": 25641,
    "transactionFee": 0.012
  },
  "recos": [
    {
      "date": 20171110,
      "executionDate": 20171112,
      "ordes": [
        {
          "symbolId": 100035,
          "recoWeight": 0.0240069671,
          "recoAmount": 1200348.354183636,
          "recoShares": 6852.0855930108,
          "currentWeight": 0.0309952304,
          "currentAmount": 1549761.52,
          "currentShares": 8846.6806713095,
          "orderWeight": 0.0069882633,
          "orderAmount": 349413.1658163641,
          "orderShares": 1994.5950782987,
          "orderType": "SELL",
          "weightInPortfolio": 0.0309952304,
          "proposedWeight": 0.0309952304
        }
      ]
    }
  ],
  "riskLim": 0.05
}
200 OK

Devuelve una lista con los ids de los portfolios creados.

400 Bad Request

JSON inválido. El mensaje mostrará el error.

403 Forbidden

El usuario no tiene permisos para crear una cartera

Response Example (200 OK)
[
  123654
]

PUT /v1/portfolios/

Modifica un portfolio a partir de los parámetros introducidos.

Ejemplo:

/v1/portfolios/

Devuelve OK si la petición ha sido recibida correctamente y se encuentra en proceso de modificación de la cartera.

Parámetros de modificación de la cartera

username

Nombre del usuario que realiza la petición

type
string
in
header
Request Example
{
  "portfolioId": 10871,
  "shortName": "CapitalPreservation.",
  "launchAssets": 100000000.0255,
  "isHedgeAdviced": true,
  "strategyId": 1,
  "riskLevel": "Medium",
  "referenceIndexSId": 65789,
  "referencePortfolioLabsId": 12567,
  "fees": {
    "managementFee": 0.25,
    "performanceFee": 0.01,
    "performanceFeeMargin": 0.1,
    "performanceFeeReference": 25641,
    "transactionFee": 0.012
  }
}
202 Accepted

Petición de modificación aceptada.

400 Bad Request

JSON inválido. El mensaje mostrará el error.

403 Forbidden

El usuario no tiene permisos para modificar una cartera.

GET /v1/portfolios/{id}/

Devuelve la información de un portfolio.

Ejemplo:

/v1/portfolios/103318/

Se devuelve un documento JSON con la información de la cartera.

id

El ID de la cartera.

type
integer
in
path
200 OK

Devuelve un la información de la cartera solicitada.

400 Bad Request

El identificador del portfolio es inválido.

404 Not Found

El portfolio especificado no existe.

Response Example (200 OK)
{
  "id": 103318,
  "name": "Capital Preservation Conservative. PL NAV",
  "currency": "EUR",
  "taste": "Pure Machine Live",
  "isHedged": true,
  "rsv": "Old",
  "launchAssets": 100000000.0255,
  "metaportfolioId": 218,
  "operativeOffset": -1,
  "riskLim": 0.15
}

GET /v1/portfolios/{id}/strategy/

Devuelve la estrategia utilizada en la gestión del portfolio.

Si el portfolio no sigue ninguna estrategia este endpoint devuelve null.

La estructura de la información es diferente para cada estrategia, pero todas ellas tienen un campo id con el identificador de la estrategia.

Ejemplo:

/v1/portfolios/115716/strategy/

Se devuelve un documento JSON con la estrategia de la cartera.

id

Identificador para el que se solicita la estrategia.

type
integer
in
path
200 OK

Devuelve la información de la cartera solicitada.

404 Not Found

Portfolio no encontrado

422 Unprocessable Entity

No se puede procesar la configuración

PUT /v1/portfolios/{id}/strategy/

Asigna al portfolio la estrategia a utilizar en su gestión.

JSON con la estrategia de la cartera. La estrategia depende de la metodología de la cartera. Es obligatorio introducir un campo id con el id de la estrategia

username

Nombre del usuario que realiza la petición

type
string
in
header
Request Example
{
  "id": "mt16"
}
200 OK

Se ha realizado correctamente la inserción o actualización de la estrategia de la cartera.

400 Bad Request

Error de validación:
· El cuerpo del mensaje debe ser un JSON válido.
· El formato del documento insertado no es correcto.

403 Forbidden

El usuario no tiene permisos para realizar la solicitud

404 Not Found

· Portfolio no encontrado.
· Metodología no definida para el porfolio especificado.

422 Unprocessable Entity

· El portfolio no tiene un esquema validación definido.
· Definición de id mal definida en el esquema de validación.
· El esquema definido debe ser un JSON válido.

PUT /v1/portfolios/{id}/backtesting/

Carga la información del backtesting que se pasa al symbol asociado al portfolio para tal efecto, Elimina la serie contenida en el symbol previamente. Si no tuviera ningún symbol asociado para ello crea un symbol de tipo internal con la información del backtesting y lo asocia al portfolio.

JSON con una serie de precios.

username

Nombre del usuario que realiza la petición

type
string
in
header
Request Example
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}
204 No Content

Se ha realizado correctamente la inserción o actualización.

400 Bad Request

Error de validación:
· El cuerpo del mensaje debe ser un JSON válido.
· El formato del documento insertado no es correcto.

403 Forbidden

El usuario no tiene permisos para realizar la solicitud

404 Not Found

· Portfolio no encontrado.

GET /v1/portfolios/{id}/compartments/

Devuelve una lista con los compartimentos pertenecientes a la cartera.

id

Identificador de la cartera de la cual se quieren obtener los compartimentos

type
integer
in
path
includedPreRecos

Indica si se debe devolver los compartimentos con estado pre-recomendado. En este caso el peso en cartera de los compartimentos deben tener en cuenta el peso de estos compartimentos.

type
boolean
in
query
200 OK

Devuelve una lista con los compartimentos de la cartera. Por cada uno de ellos se devuelve su identificador y el peso actual en la cartera

404 Not Found

Not Found

Response Example (200 OK)
{
  "id": 119656,
  "currentWeight": 0.0993590556227406
}

GET /v1/portfolios/{id}/ties/

Devuelve el límite de riesgo y la serie de DD del GAV de los portfolios reales del mismo producto que tienen un limite de riesgo superior al del portfolio gestionado.

Para portfolios teóricos y para portfolios reales sin portfolios de mayor riesgo en su mismo producto devuelve una lista vacia.

id

Identificador de la cartera de la cual se quieren obtener los ties

type
integer
in
path
200 OK

Devuelve una lista con los GAVs de las carteras pertenecientes al mismo producto. Por cada uno de ellos se devuelve su risklimit y la serie de drawdowns

404 Not Found

Not Found

Response Example (200 OK)
{
  "gavdd": {
    "prices": [
      0.25148574659
    ],
    "dates": [
      "20171022"
    ]
  },
  "risklim": 0.5
}

GET /v1/portfolios/{id}/positions/

Obtiene las posiciones de una cartera.

Si no se pasa ningún parámetro, devuelve las últimas

Ejemplos:

Obtiene las posiciones a una fecha dada:

/v1/portfolios/121392/positions/?period=20170504

Obtiene las últimas posiciones:

/v1/portfolios/121392/positions/?period=last

Obtiene las posiciones entre 2 fechas:

/v1/portfolios/121392/positions/?period=20170504-20170506

Obtiene las posiciones para un periodo:

/v1/portfolios/121392/positions/?period=1Y

id

Identificador de la cartera para la que se solicitan las posiciones.

type
integer
in
path
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". Si no se especifica period devuelve las últimas.

type
string
in
query
200 OK

Devuelve las posiciones para el ID de la cartera solicitada en formato JSON a partir del dataframe resultante.

404 Not Found

Not Found

Response Example (200 OK)
{
  "valuationDate": 20170517,
  "positions": [
    {
      "symbolId": 41897,
      "weight": 0.10600444199511803,
      "shares": 2550,
      "date": 20170812,
      "type": "long",
      "price": 0.23151780664920807,
      "currencyRate": 1,
      "amount": 2000
    }
  ]
}

PUT /v1/portfolios/{id}/positions/

Actualiza las posiciones de la cartera.

Lista de posiciones de la cartera.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "valuationDate": 20170517,
  "positions": [
    {
      "symbolId": 41897,
      "weight": 0.10600444199511803,
      "shares": 2550,
      "date": 20170812,
      "type": "long",
      "price": 0.23151780664920807,
      "currencyRate": 1,
      "amount": 2000
    }
  ]
}
200 OK

Información de valoración insertada

400 Bad Request

Error en la inserción de posiciones

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/trades/

Obtiene los trades de un portfolio.

Ejemplos:

Obtiene los trades a partir de una fecha dada:

/v1/portfolios/121392/trades/?period=20170424

Obtiene los últimas trades:

/v1/portfolios/121392/trades/?period=last

Obtiene los trades entre 2 fechas:

/v1/portfolios/121392/trades/?period=20170401-20170501

Obtiene los trades para un periodo:

/v1/portfolios/121392/trades/?period=1Y

id

Identificador de la cartera para la que se solicitan los trades.

type
integer
in
path
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". En el caso de que solo se especifique una fecha, se devuelve la serie de precios disponible hasta la última fecha disponible. Si no se especifica period devuelve los úlmos disponibles.

type
string
in
query
200 OK

Devuelve los trades para el ID de la cartera solicitada en formato JSON a partir del dataframe resultante.

400 Bad Request

Formato de los parámetros no válido.

404 Not Found

Identificador de portfolio no encontrado.

Response Example (200 OK)
{
  "date": 20170517,
  "symbolId": 41897,
  "type": "buy",
  "weight": 0.10600444199511803,
  "shares": 2550,
  "price": 0.23151780664920807,
  "currencyRate": 1,
  "amount": 2000
}

PUT /v1/portfolios/{id}/trades/

Actualiza los trades de la cartera.

Lista de trades de la cartera.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "date": 20170517,
  "symbolId": 41897,
  "type": "buy",
  "weight": 0.10600444199511803,
  "shares": 2550,
  "price": 0.23151780664920807,
  "currencyRate": 1,
  "amount": 2000
}
200 OK

Información de trades insertada

400 Bad Request

Error en la inserción de trades

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/frequenttrading/

Devuelve la información de frequent trading relativa al portfolio para un conjunto de symbols y una fecha dada. Para cada symbol devuelve dos datos:

  1. in: nº de días desde que se incrementó la posición en el portfolio en la fecha dada (diferencia de días naturales entre la fecha dada y la última fecha de compra). Si la fecha dada y la fecha de compra es la misma devuelve 0. Si el portfolio nunca ha estado invertido en el symbol en la fecha dada devuelve null.

  2. out: nº de días desde que se redujo la posición en el portfolio (diferencia de días naturales entre la fecha dada y la fecha la última venta). Si la fecha dada y la fecha de venta es la misma devuelve 0. Si nunca ha invertido en el symbol devuelve null.

Si un activo nunca ha estado en cartera, tanto el campo in como out estarán a null.

La fecha es opcional y por defecto es cierre de ayer. En el caso de funds y fundclass estos valores se refieren a la inversión del portfolio en cualquiera de las clases del fund.


Ejemplos:

/v1/portfolios/120827/frequenttrading/?ids=19746,19742&date=20170510

devuelve:

[{
"symbolId": 19746,
"out": 8,
"in": 8
},
{
"symbolId": 19742,
"out": 3872,
"in": 3886
}]

/v1/portfolios/120827/frequenttrading/?ids=23518

devuelve:

[{
"symbolId": 23518,
"out": null,
"in": null
}]
id

Identificador de la cartera sobre la cual se solicita el frequent trading.

type
integer
in
path
ids

Identificador de los símbolos para los cuales se solicita el frequent trading.

type
integer[]
in
query
date

Fecha para la que se solicitan el frequent trading. Debe estar en formato YYYYMMDD.

type
string
in
query

Devuelve el frequent trading de los símbolos indicados para la cartera solicitada.

404 Not Found

Not Found

Response Example (200 OK)
[
  {
    "in": 154,
    "out": 22,
    "symbolId": 125436
  }
]

GET /v1/portfolios/{id}/impacts/

Devuelve el impacto total y diario a tener en cuenta en la gestión de un determinado portfolio.

Para que los workers no tengan que tratar los impactos de distinta manera según las características del portfolio que recomiendan, este endpoint devuelve los impactos a tener en cuenta en la gestión de un determinado portfolio.

Descuenta además de los impactos el impacto parcial del porfolio gestionado.

Absorbe por tanto la complejidad a tener en cuenta en el cálculo de impactos para la gestión de un portfolio.

Solo se realizan recomendaciones sobre portfolios Compartment o portfolios Proper, por lo tanto para otro tipo de portfolio este endpoint devolverá un error.

Para los sabores Validation, Recommended, Dirty Machine y Pure Machine Live de portfolios Reales (Compartment o Proper) devolverá los impactos descontando del impacto total el impacto parcial y del diario el debido al portfolio que se está gestionando.

Para el resto de casos devuelve impactos cero.


Ejemplos:

/v1/portfolios/6188/impacts/?ids=109944,80528&date=20170522

id

Identificador de la cartera para la que se quiere conocer el impacto

type
integer
in
path
ids

Lista de symbolIds sobre la que se requiere el impacto que sobre ellos tiene el portfolio

type
integer[]
in
query
date

Fecha para la que se quiere conocer los impactos.

type
string
in
query
200 OK

Devuelve el impacto total y diario de la cartera en los symbolIds recibidos para la fecha dada

400 Bad Request

Parametrización inválida

406 Not Acceptable

El portfolio solicitado no es un portfolio gestionable (portfolios Proper y Compartment)

Response Example (200 OK)
[
  {
    "symbolId": "integer",
    "totalImpact": "number",
    "dailyImpact": "number"
  }
]

GET /v1/portfolios/{id}/assets/

Devuelve los patrimonios de la cartera indicada en la URL. Además, se puede especificar la divisa en la que se devuelve el patrimonio con el parámetro currency.


Ejemplos:

Obtiene el último patrimonio en euros:

/v1/portfolios/120827/assets/?period=last&currency=EUR

Obtiene la serie completa de patrimonios:

/v1/portfolios/121628/assets/

id

Identificador de la cartera para la que se solicita el patrimonio.

type
integer
in
path
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd-[yyyyMMdd]". En el caso de que solo se especifique una fecha, se devuelve la serie de precios disponible hasta la última fecha disponible. Si no se especifica period devuelve toda la serie.

type
string
in
query
currency

Divisa en la cual se recupera la serie de patrimonios.

type
string
in
query
200 OK

Devuelve la serie de patrimonios para el ID de la cartera solicitada.

400 Bad Request

Validation error

404 Not Found

Not Found

Response Example (200 OK)
{
  "assets": [
    0.25148574659
  ],
  "dates": [
    2.23697526135132
  ]
}

PUT /v1/portfolios/{id}/assets/

Actualiza el patrimonio del portfolio.

Patrimonio del portfolio.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "assets": [
    0.25148574659
  ],
  "dates": [
    2.23697526135132
  ]
}
200 OK

Información de valoración insertada

400 Bad Request

Error en la inserción de patrimonios

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/nav/

Devuelve el NAV del portfolio.


Ejemplos:

Obtiene el último NAV:

/v1/portfolios/120827/nav/?period=last

Obtiene la serie completa del NAV:

/v1/portfolios/121628/nav/

id

Identificador de la cartera para la que se solicita el NAV.

type
integer
in
path
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". En el caso de que solo se especifique una fecha, se devuelve la serie de precios disponible hasta la última fecha disponible. Si no se especifica period devuelve toda la serie.

type
string
in
query
200 OK

Devuelve la serie del NAV para el ID de la cartera solicitada.

400 Bad Request

Validation error

404 Not Found

Not Found

Response Example (200 OK)
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}

PUT /v1/portfolios/{id}/nav/

Actualiza el NAV del portfolio.

NAV del portfolio.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}
200 OK

Información de valoración insertada

400 Bad Request

Error en la inserción del nav

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/gav/

Devuelve el GAV del portfolio.


Ejemplos:

Obtiene el último GAV:

/v1/portfolios/120827/gav/?period=last

Obtiene la serie completa del GAV:

/v1/portfolios/121628/gav/

id

Identificador de la cartera para la que se solicita el GAV.

type
integer
in
path
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". En el caso de que solo se especifique una fecha, se devuelve la serie de precios disponible hasta la última fecha disponible. Si no se especifica period devuelve toda la serie.

type
string
in
query
200 OK

Devuelve la serie del NAV para el ID de la cartera solicitada.

400 Bad Request

Validation error

404 Not Found

Not Found

Response Example (200 OK)
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}

PUT /v1/portfolios/{id}/gav/

Actualiza el GAV del portfolio.

GAV del portfolio.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}
200 OK

Información de valoración insertada

400 Bad Request

Error en la inserción del gav

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/gav/frictionConfig/

Devuelve la configuración de rozamiento del GAV para valorar un NAV teórico y aproximado


Ejemplos:

http://etsprd1:8002/v1/portfolios/5095/gav/frictionConfig/

id

Identificador de la cartera.

type
integer
in
path
200 OK
Fee

Devuelve la configuración para el ID de la cartera solicitada.

400 Bad Request

Validation error

404 Not Found

Not Found

Response Example (200 OK)
{
  "managementFee": 0.02,
  "performanceFee": 0.01,
  "performanceFeeMargin": 0.1,
  "performanceFeeReference": 214523,
  "transactionFee": 0.012,
  "isHedged": true
}

PUT /v1/portfolios/{id}/gav/frictionConfig/

Modifica la configuración de rozamiento del GAV para valorar un NAV teórico y aproximado

Fee

Configuración del rozamiento

id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "managementFee": 0.02,
  "performanceFee": 0.01,
  "performanceFeeMargin": 0.1,
  "performanceFeeReference": 214523,
  "transactionFee": 0.012,
  "isHedged": true
}
204 No Content

Valore modificados correctamente

400 Bad Request

Validation error

404 Not Found

Not Found

GET /v1/portfolios/{id}/universe/

Obtiene los identificadores de los símbolos que forman el universo de la cartera. Si se especifica una fecha obtiene el universo a esa fecha, si no, devuelve el universo actual.

id

Identificador de la cartera para la que se solicitan los símbolos.

type
integer
in
path
date

Fecha en formato YYYYMMDD.

type
string
in
query
200 OK

Devuelve lista con los identificadores de los símbolos.

400 Bad Request

Validation error

404 Not Found

Portfolio not found

Response Example (200 OK)
[
  "integer"
]

GET /v1/portfolios/{id}/calendar/

Devuelve una lista de fechas con las fechas de las próximas recomendaciones del portfolio. Se puede seleccionar un periodo de tal forma que te devuelve las recomendaciones previstas en ese periodo. El periodo acepta un rango fechas, 2 semanas (2W), 1M (1 mes) o next delvolviéndote la próxima recomendación. Por defecto devuelve únicamente la fecha de la próxima recomendación.

id

Identificador de la cartera.

type
integer
in
path
period

YYYYMMDD-YYYYMMDD, 2W, 1M, next.

type
string
in
query
200 OK

Lista de fechas con las fechas de las próximas recomendaciones.

400 Bad Request

El identificador del portfolio no es número

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/calendar/pattern/

Devuelve el patrón de fechas en las que se debe recomendar la cartera.

id

Identificador de la cartera.

type
integer
in
path
200 OK

Devuelve el patrón

400 Bad Request

El identificador del portfolio no es número

404 Not Found

Portfolio no encontrado

Response Example (200 OK)
{
  "freq": "daily",
  "interval": 1,
  "firstDate": "20170102",
  "byweekday": [
    [
      0,
      2,
      4
    ]
  ]
}

PUT /v1/portfolios/{id}/calendar/pattern/

Establece el patrón de fechas en las que se debe recomendar la cartera.

Patrón de fechas

username

Nombre del usuario que realiza la petición

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "freq": "daily",
  "interval": 1,
  "firstDate": "20170102",
  "byweekday": [
    [
      0,
      2,
      4
    ]
  ]
}
204 No Content

Patrón actualizado

400 Bad Request

Error en la validación del JSON

404 Not Found

Portfolio no encontrado

GET /v1/portfolios/{id}/operativeOffset/

Devuelve el offset operativo de la cartera.

id

Identificador de la cartera.

type
integer
in
path

Devuelve el offset operativo

400 Bad Request

El identificador del portfolio no es número

404 Not Found

Portfolio no encontrado

Response Example (200 OK)
{
  "operativeOffset": 1
}

PUT /v1/portfolios/{id}/operativeOffset/

Establece el offset operativo de la cartera.

Offset Operativo

username

Nombre del usuario que realiza la petición

type
string
in
header
id

Identificador de la cartera.

type
integer
in
path
Request Example
{
  "operativeOffset": 1
}
204 No Content

Offset Operativo actualizado

400 Bad Request

Error en la validación del JSON

404 Not Found

Portfolio no encontrado

Metaportfolios

GET /v1/metaportfolios/

Devuelve la información de un metaportfolio.

Ejemplo:

/v1/metaportfolios/1/

Se devuelve un documento JSON con la información de un metaportfolio.

id

El ID del metaportfolio.

type
integer
in
path
200 OK

Devuelve la información del metaportfolio solicitado.

400 Bad Request

El identificador del metaportfolio es inválido.

404 Not Found

El metaportfolio especificado no existe.

Response Example (200 OK)
{
  "id": 190,
  "name": "BICE Tendencias",
  "isPaper": "boolean",
  "simulationSid": 89929
}

Recos

POST /v1/recos/

Solicita la generación de una recomendacion. Este endpoint recoge la petición y devuelve un identificador de recomendaciónsolicitada, con las que el usuario podrá consultarla cuando el sistema las haya procesado.

Solicitud de recomendación

username

Nombre del usuario que realiza la petición

type
string
in
header
Recomendación

(no description)

type
object
in
Request Example
{
  "portfolioId": 12658,
  "strategy": {
    "id": "mt16"
  },
  "executionDate": 20171004,
  "currentPositions": {
    "valuationDate": 20170517,
    "positions": [
      {
        "symbolId": 41897,
        "weight": 0.10600444199511803,
        "shares": 2550,
        "date": 20170812,
        "type": "long",
        "price": 0.23151780664920807,
        "currencyRate": 1,
        "amount": 2000
      }
    ]
  },
  "client": "finhub",
  "currency": "EUR"
}
200 OK

Devuelve un 200 para confirmar que se ha creado la solicitud junto con un objeto con el id y portfolioId.

400 Bad Request

JSON inválido. El mensaje mostrará el error.

403 Forbidden

El usuario no tiene permisos para solicitar una recomendación

GET /v1/recos/search/

Busca las recomendaciones que se corresponden con los parámetros indicados en la URL. Devuelve los identificadores de las recomendaciones encontradas.

La petición contempla 2 casos:

  1. Obtener los identificadores de las recomendaciones de un cliente.

  2. Obtener los identificadores de las recomendaciones de una cartera.

En ambos casos se permite obtener opcionalmente las recomendaciones para un determinado periodo y un estado dados. Los 2 casos son incompatibles entre sí.

Ejemplo:

/v1/recos/search/?client=finhub&status=Processed

/v1/recos/search/?portfolioId=port_1&period=1Y&status=Published

Se devuelve un documento JSON con la información de la recomendaciones

portfolioId

Identificador del porfolio del que se quieren recuperar sus recomendaciones.

type
string
in
query
client

Nombre del cliente del que se quieren recuperar sus recomendaciones.

type
string
in
query
period

1Y, 3Y, 5Y, 10Y, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". Si no se especifica period devuelve todas las recomendaciones

type
string
in
query
status

Estado de las recomendaciones que queremos obtener.

type
string , x ∈ { Requested , In Process , Processed , Error , Error Reported , Published }
in
query
200 OK

Devuelve un la información de la recomendacion solicitada.

400 Bad Request

Validation error. El formato de los parámetros no es correcto.

404 Not Found

Not Found

Response Example (200 OK)
[
  1584
]

GET /v1/recos/{id}/

Devuelve la recomendacion solicitada.

Ejemplo:

/v1/recos/260/

Se devuelve un documento JSON con la información de la recomendación.

id

El ID de la recomendación.

type
integer
in
path
fields

Campos a añadir a la información obtenida.

type
string[]
in
query

Devuelve un la información de la recomendacion solicitada.

400 Bad Request

Validation error. El formato de los parámetros no es correcto.

404 Not Found

Not Found

Response Example (200 OK)
{
  "id": 12658,
  "portfolioId": 12658,
  "strategy": {
    "id": "mt16"
  },
  "user": "string",
  "currentPositions": [
    {
      "valuationDate": 20170517,
      "positions": [
        {
          "symbolId": 41897,
          "weight": 0.10600444199511803,
          "shares": 2550,
          "date": 20170812,
          "type": "long",
          "price": 0.23151780664920807,
          "currencyRate": 1,
          "amount": 2000
        }
      ]
    }
  ],
  "client": "string",
  "requestedDate": "20150215 11:00:12",
  "inProcessDate": "20150215 11:00:13",
  "processedDate": "20150215 11:00:22",
  "publishedDate": "20150215 11:01:12",
  "reco": [
    {
      "symbolId": 100035,
      "recoWeight": 0.0240069671,
      "recoAmount": 1200348.354183636,
      "recoShares": 6852.0855930108,
      "currentWeight": 0.0309952304,
      "currentAmount": 1549761.52,
      "currentShares": 8846.6806713095,
      "orderWeight": 0.0069882633,
      "orderAmount": 349413.1658163641,
      "orderShares": 1994.5950782987,
      "orderType": "SELL",
      "weightInPortfolio": 0.0309952304,
      "proposedWeight": 0.0309952304
    }
  ]
}

POST /v1/recos/publish/

Solicita la publicación de una recomendación aún no publicada.

Previamente a publicar en el bus comprueba que las posiciones recibidas suman 1. Si no es así devuelve error 422.

Una recomendación

username

Nombre del usuario que realiza la petición

type
string
in
header
Request Example
{
  "portfolioId": 12658,
  "date": 20150215,
  "executionDate": 20150215,
  "confidenceLevel": 1,
  "compartmentWeight": 1,
  "orders": [
    {
      "symbolId": 100035,
      "recoWeight": 0.0240069671,
      "recoAmount": 1200348.354183636,
      "recoShares": 6852.0855930108,
      "currentWeight": 0.0309952304,
      "currentAmount": 1549761.52,
      "currentShares": 8846.6806713095,
      "orderWeight": 0.0069882633,
      "orderAmount": 349413.1658163641,
      "orderShares": 1994.5950782987,
      "orderType": "SELL",
      "weightInPortfolio": 0.0309952304,
      "proposedWeight": 0.0309952304
    }
  ]
}
202 Accepted

Devuelve un 202 para confirmar que se ha creado la recomendación.

400 Bad Request

Validation error. El formato del documento insertado no es correcto.

403 Forbidden

El usuario no tiene permisos para realizar la solicitud

409 Conflict

La recomendación ya fue publicada anteriormente

422 Unprocessable Entity

Las posiciones no suman 1. Ya existe una recomendación para ese día y para esa cartera. La recomendación se encuentra en un estado no válido para publicar.

POST /v1/recos/{id}/publish/

Solicita la publicación de una recomendación aún no publicada a partir del identificador.

Previamente a publicar en el bus comprueba que las posiciones de la reco suman 1. Si no es así devuelve error 422.

username

Nombre del usuario que realiza la petición

type
string
in
header
Recomendación

(no description)

type
object
in
id

El ID de la recomendación.

type
integer
in
path
202 Accepted

Devuelve un 202 para confirmar que se ha creado la recomendación.

400 Bad Request

Validation error. El formato del identificador no es válido.

403 Forbidden

El usuario no tiene permisos para realizar la solicitud

409 Conflict

La recomendación ya fue publicada anteriormente

422 Unprocessable Entity

Las posiciones no suman 1. Ya existe una recomendación para ese día y para esa cartera. La recomendación se encuentra en un estado no válido para publicar.

GET /v1/recos/{id}/orders/

Devuelve las orders de la recomenedación que se corresponde con el identificador indicado en la URL.

Ejemplo:

/v1/recos/260/orders/

Se devuelve una lista con la información de las ordenes.

id

El ID de la recomendación.

type
integer
in
path

Devuelve un la información de la recomendacion solicitada.

404 Not Found

Not Found

Response Example (200 OK)
[
  {
    "symbolId": 100035,
    "recoWeight": 0.0240069671,
    "recoAmount": 1200348.354183636,
    "recoShares": 6852.0855930108,
    "currentWeight": 0.0309952304,
    "currentAmount": 1549761.52,
    "currentShares": 8846.6806713095,
    "orderWeight": 0.0069882633,
    "orderAmount": 349413.1658163641,
    "orderShares": 1994.5950782987,
    "orderType": "SELL",
    "weightInPortfolio": 0.0309952304,
    "proposedWeight": 0.0309952304
  }
]

GET /v1/recos/{id}/strategy/

Devuelve la estrategia de la recomenedación que se corresponde con el identificador indicado en la URL.

Ejemplo:

/v1/recos/260/strategy/

Devuelve un string con la información de la estrategia de la recomendación solicitada.

id

El ID de la recomendación.

type
integer
in
path
200 OK

Devuelve la estrategia de la recomendacion solicitada.

404 Not Found

Not Found

Response Example (200 OK)
{
  "id": "mt01"
}

GET /v1/recos/{id}/attachment/

Información adjunta a la reco. Los worker disponen de este campo para almacenar información relativa a la reco para un uso discreccional. La información se guarda en un string pero es cosa del usuario que guarda, cómo lo guarda y cómo lo interpreta cuando lo recupera.

Ejemplo:

/v1/recos/260/attachment/

Devuelve un string con la información del attachment de la recomendación solicitada.

id

El ID de la recomendación.

type
integer
in
path
200 OK

Devuelve el attachment de la recomendacion solicitada.

404 Not Found

Not Found

PUT /v1/recos/{id}/attachment/

Configura la información adjunta a la reco. La información se guarda en un string pero es cosa del usuario que guarda, cómo lo guarda y cómo lo interpreta cuando lo recupera.

username

Nombre del usuario que realiza la petición.

type
string
in
header
id

El ID de la recomendación.

type
integer
in
path
200 OK

Devuelve el attachment de la recomendación solicitada.

403 Forbidden

El usuario no tiene permisos para realizar la solicitud

404 Not Found

Not Found

GET /v1/recos/dates/

Obtiene las fechas de las recomendaciones publicadas de una cartera en un periodo. El objeto devuelto es una lista de pares (id, date) con el identificador de la recomendación y su fecha de publicación.

Ejemplo:

/v1/recos/dates/?portfolioId=122087&period=YTD

Devuelve una lista de pares (id, date).

id

Identificador de la cartera para la que se solicitan las posiciones.

type
integer
in
path
period

1D, 1M, 3M, 6M, 1Y, 3Y, 5Y, 10Y, YTD, last o un periodo seleccionado con formato "yyyyMMdd[-yyyyMMdd]". Si no se especifica period devuelve las últimas.

type
string
in
query
200 OK

Devuelve una lista de pares (id, date) con las fechas de las recomendaciones publicadas junto con su identificador.

400 Bad Request

Query string no válido

Impacts

GET /v1/impacts/

Devuelve el impacto total y diario del asesoramiento de de ETS en un conjunto de symbols para una fecha dada.

El impacto total de ETS sobre un symbol es el porcentaje del patrimonio del symbol que se ha invertido realmente por asesoramiento de ETS.

El impacto diario de ETS sobre un symbol es el porcentaje del patrimonio del symbol que se invierte por asesoramiento de ETS en una fecha dada.

A la hora de calcular los impactos se tiene en cuenta las operaciones de todas las carteras reales y de los clones que generan impacto. Se tiene en cuenta tanto los trades ya ejecutados como las órdenes pendientes de ejecución.

El impacto es un número entre 0 y 1, que normalmente estará en las proximidades del 0. Un impacto 0 es que no hay inversión debida a ETS. Un impacto de 1 sería que todo el patrimonio que tiene el symbol es debido al asesoramiento de ETS (límite que lógicamente no se alcanza). Valores fuera de ese intervalo no tienen sentido

Ejemplo:

/v1/portfolios/impacts/?ids=109944,80528&date=20170522

ids

Lista de symbolIds sobre la que se quiere conocer el impacto.

type
integer[]
in
query
date

Fecha para la que se quiere conocer los impactos.

type
string
in
query
200 OK

Devuelve el impacto total y diario de la cartera en los symbolIds recibidos para la fecha dada

400 Bad Request

Parametrización inválida

Response Example (200 OK)
[
  {
    "symbolId": "integer",
    "totalImpact": "number",
    "dailyImpact": "number"
  }
]

Schema Definitions

AssetsSeries: object

Serie de assets.

assets: number[]
dates: number[]
Example
{
  "assets": [
    0.25148574659
  ],
  "dates": [
    2.23697526135132
  ]
}

PricesSeries: object

Serie de precios.

prices: number[]
dates: string[]
Example
{
  "prices": [
    0.25148574659
  ],
  "dates": [
    "20171022"
  ]
}

Trades: object

date: string

Fecha del trade

symbolId: integer

Identificador interno del symbol asociado a la posición.

type: string

Tipo de trade (buy/sell)

weight: number

Peso del trade

shares: integer

Número de participaciones de la operación

price: number

Valor del precio del symbol.

currencyRate: number

Precio del cambio de moneda.

amount: integer

Número de subscripciones de la operación.

Example
{
  "date": 20170517,
  "symbolId": 41897,
  "type": "buy",
  "weight": 0.10600444199511803,
  "shares": 2550,
  "price": 0.23151780664920807,
  "currencyRate": 1,
  "amount": 2000
}

RecoRequest: object

portfolioId: integer

Identificador del Portfolio.

strategy: Strategy

Estrategia utilizada en la recomendación.

executionDate: string

Fecha de la ejecución de la reco.

currentPositions: Positions

Posiciones abiertas de la cartera en el momento de solicitud de la recomendación.

client: string

Nombre del cliente que inició la solicitud.

currency: string

Identificador de la divisa.

Example
{
  "portfolioId": 12658,
  "strategy": {
    "id": "mt16"
  },
  "executionDate": 20171004,
  "currentPositions": {
    "valuationDate": 20170517,
    "positions": [
      {
        "symbolId": 41897,
        "weight": 0.10600444199511803,
        "shares": 2550,
        "date": 20170812,
        "type": "long",
        "price": 0.23151780664920807,
        "currencyRate": 1,
        "amount": 2000
      }
    ]
  },
  "client": "finhub",
  "currency": "EUR"
}

RecommendationResponse: object

id: integer

Identificador del Portfolio.

portfolioId: integer

Identificador del Portfolio.

strategy: Strategy
user: string

Nombre del usuario que realizó la recomendación.

currentPositions: object[]
client: string

Nombre del cliente que inició la solicitud.

currency: Currency
requestedDate: string

Fecha de la que se solicita la recomendación en formato YYYYMMDD HH:MM:SS.

inProcessDate: string

Fecha a la que se empieza a processarla recomendación en formato YYYYMMDD HH:MM:SS.

processedDate: string

Fecha a la que ababa de procesarse la recomendación en formato YYYYMMDD HH:MM:SS.

publishedDate: string

Fecha a la que se publica la recomendación en formato YYYYMMDD HH:MM:SS.

reco: object[]
Example
{
  "id": 12658,
  "portfolioId": 12658,
  "strategy": {
    "id": "mt16"
  },
  "user": "string",
  "currentPositions": [
    {
      "valuationDate": 20170517,
      "positions": [
        {
          "symbolId": 41897,
          "weight": 0.10600444199511803,
          "shares": 2550,
          "date": 20170812,
          "type": "long",
          "price": 0.23151780664920807,
          "currencyRate": 1,
          "amount": 2000
        }
      ]
    }
  ],
  "client": "string",
  "requestedDate": "20150215 11:00:12",
  "inProcessDate": "20150215 11:00:13",
  "processedDate": "20150215 11:00:22",
  "publishedDate": "20150215 11:01:12",
  "reco": [
    {
      "symbolId": 100035,
      "recoWeight": 0.0240069671,
      "recoAmount": 1200348.354183636,
      "recoShares": 6852.0855930108,
      "currentWeight": 0.0309952304,
      "currentAmount": 1549761.52,
      "currentShares": 8846.6806713095,
      "orderWeight": 0.0069882633,
      "orderAmount": 349413.1658163641,
      "orderShares": 1994.5950782987,
      "orderType": "SELL",
      "weightInPortfolio": 0.0309952304,
      "proposedWeight": 0.0309952304
    }
  ]
}

Recommendation: object

Objeto de recomendación para publicar en BO a través del bus.

portfolioId: integer

Identificador del Portfolio.

date: string

Fecha de la recomendación en formato YYYYMMDD.

executionDate: string

Fecha de ejecución de la recomendación en formato YYYYMMDD.

confidenceLevel: number

Nivel de confianza.

compartmentWeight: number

Peso del compartimento

orders: object[]

Array de órdenes de recomendación.

Example
{
  "portfolioId": 12658,
  "date": 20150215,
  "executionDate": 20150215,
  "confidenceLevel": 1,
  "compartmentWeight": 1,
  "orders": [
    {
      "symbolId": 100035,
      "recoWeight": 0.0240069671,
      "recoAmount": 1200348.354183636,
      "recoShares": 6852.0855930108,
      "currentWeight": 0.0309952304,
      "currentAmount": 1549761.52,
      "currentShares": 8846.6806713095,
      "orderWeight": 0.0069882633,
      "orderAmount": 349413.1658163641,
      "orderShares": 1994.5950782987,
      "orderType": "SELL",
      "weightInPortfolio": 0.0309952304,
      "proposedWeight": 0.0309952304
    }
  ]
}

Positions: object

Conjunto de posiciones en una fecha dada. Está formado por una fecha de valoración y una lista de posiciones.

valuationDate: string

Fecha de las posiciones

positions: object[]

Lista de posiciones de la fecha dada.

Example
{
  "valuationDate": 20170517,
  "positions": [
    {
      "symbolId": 41897,
      "weight": 0.10600444199511803,
      "shares": 2550,
      "date": 20170812,
      "type": "long",
      "price": 0.23151780664920807,
      "currencyRate": 1,
      "amount": 2000
    }
  ]
}

Frequenttrading: object

in: integer

Número de días desde que se incrementó la posición en cartera.

out: integer

Número de días desde que se redujo la posición en cartera.

symbolId: integer

Identificador del símbolo.

Example
{
  "in": 154,
  "out": 22,
  "symbolId": 125436
}

Impacts: object

symbolId: integer

Identificador del símbolo

totalImpact: number

El impacto total de ETS sobre un symbol es el porcentaje del patrimonio del symbol que se ha invertido realmente por asesoramiento de ETS.

impacto total = (sum(peso * (patrimonio cartera + patrimonio clones)) / patrimonio del activo

En caso de que el activo sea fundclass, se tiene en cuenta la inversión de todas las clases del fondo y se divide entre el patrimonio del fondo.

Todos los patrimonios se toman en la misma divisa, en este caso, en euros.

dailyImpact: number

El impacto diario de ETS sobre un symbol es el porcentaje del patrimonio del symbol que se invierte por asesoramiento de ETS en una fecha dada.

impacto diario = (sum(trade * (patrimonio cartera + patrimonio clones)) / patrimonio del activo

En caso de que el activo sea fundclass, se tiene en cuenta la rotación de todas las clases del fondo y se divide entre el patrimonio del fondo.

Todos los patrimonios se toman en la misma divisa, en este caso, en euros.

Example
{
  "symbolId": "integer",
  "totalImpact": "number",
  "dailyImpact": "number"
}

ConfigurationConstraints: object

frequentTradingControl: boolean

PENDIENTE

benchmarkSid: integer

PENDIENTE

linesNumber: integer

PENDIENTE

riskLimAbsolute: number

PENDIENTE

riskLimRelative: number

PENDIENTE

riskLim: number

PENDIENTE

Example
{
  "frequentTradingControl": true,
  "benchmarkSid": "PENDIENTE",
  "linesNumber": "PENDIENTE",
  "riskLimAbsolute": "PENDIENTE",
  "riskLimRelative": "PENDIENTE",
  "riskLim": "PENDIENTE"
}

FamilyConstraints: object

minAssets: integer

Patrimonio mínimo

maxAssets: integer

Patrimonio máximo

minInvestment: number

Inversión mínima

maxInvestment: number

Inversión máxima

Example
{
  "minAssets": "PENDIENTE",
  "maxAssets": "PENDIENTE",
  "minInvestment": "PENDIENTE",
  "maxInvestment": "PENDIENTE"
}

Family: object

familyId: integer

Identificador del tipo de familia

name: string

Nombre de la familia

color: string

Color de la familia

linkedCategoryId: integer

Identificador de la categoría asociada

constraints: FamilyConstraints
Example
{
  "familyId": 8,
  "name": "string",
  "color": "PENDIENTE",
  "linkedCategoryId": "PENDIENTE",
  "constraints": {
    "minAssets": "PENDIENTE",
    "maxAssets": "PENDIENTE",
    "minInvestment": "PENDIENTE",
    "maxInvestment": "PENDIENTE"
  }
}

Group: object

name: string

Nombre del grupo de familias

familyType: integer

Identificador del tipo de familia

families: object[]
Example
{
  "name": "PENDIENTE",
  "familyType": 4,
  "families": [
    {
      "familyId": 8,
      "name": "string",
      "color": "PENDIENTE",
      "linkedCategoryId": "PENDIENTE",
      "constraints": {
        "minAssets": "PENDIENTE",
        "maxAssets": "PENDIENTE",
        "minInvestment": "PENDIENTE",
        "maxInvestment": "PENDIENTE"
      }
    }
  ]
}

DecisionConstraint: object

PENDIENTE

minLongInvestment: number

PENDIENTE

maxLongInvestment: number

PENDIENTE

minConditionalWeight: number

PENDIENTE

minTurnover: number

PENDIENTE

maxTurnover: number

PENDIENTE

ousted: boolean

PENDIENTE

Example
{
  "minLongInvestment": "PENDIENTE",
  "maxLongInvestment": "PENDIENTE",
  "minConditionalWeight": "PENDIENTE",
  "minTurnover": "PENDIENTE",
  "maxTurnover": "PENDIENTE",
  "ousted": true
}

DecisionAsset: object

symbolId: integer

Identificador del símbolo

constraints: DecisionConstraint
investmentAssetSymbolIds: integer[]

PENDIENTE

groupFamilies: integer[]

Grupo de familias

Example
{
  "symbolId": "PENDIENTE",
  "constraints": {
    "minLongInvestment": "PENDIENTE",
    "maxLongInvestment": "PENDIENTE",
    "minConditionalWeight": "PENDIENTE",
    "minTurnover": "PENDIENTE",
    "maxTurnover": "PENDIENTE",
    "ousted": true
  },
  "investmentAssetSymbolIds": [
    65215
  ],
  "groupFamilies": [
    215452
  ]
}

Strategy: object

id: string

Identificador de la estrategia

Example
{
  "id": "mt16"
}

Portfolio: object

Información de una cartera.

id: integer

Identificador de la cartera.

name: string

Nombre de la cartera.

currency: string

Identificador de la divisa en ISO 4217

taste: string

Descripción del sabor

isHedged: boolean

Si la cartera isHedged

rsv: string

Indica el sistema de recomendación que utiliza la cartera None, Old, New

launchAssets: number

PENDIENTE

metaportfolioId: integer

Identificador que agrupa los portfolios.

operativeOffset: integer

PENDIENTE

riskLim: number

Límite de riesgo

Example
{
  "id": 103318,
  "name": "Capital Preservation Conservative. PL NAV",
  "currency": "EUR",
  "taste": "Pure Machine Live",
  "isHedged": true,
  "rsv": "Old",
  "launchAssets": 100000000.0255,
  "metaportfolioId": 218,
  "operativeOffset": -1,
  "riskLim": 0.15
}

PortfolioRequest: object

Parámetros de creación de la cartera.

type: string

Tipo de cartera que se va a crear.

name: string

Nombre de la cartera.

shortName: string

Abreviación del nombre de la cartera.

currency: string

Identificador de la divisa en ISO 4217

launchAssets: number

Patrimonio de partida de la cartera.

isHedge: boolean

Si la cartera isHedge

strategyId: integer

Identificador de la estrategia utilizada en las recomendaciones de la cartera.

riskLevel: string

Nivel de riesgo de la cartera.

universeType: string

Tipo de universo utilizado por la cartera.

referenceIndexSId: integer

Identificador del symbol utilizado como indice de referencia.

volatility: number

Volatilidad de la cartera.

referencePortfolioLabsId: integer

Identificador del portfolio Labs de referencia.

fees: PortfolioFees
recos: object[]
riskLim: number

Límite de riesgo de la cartera.

Example
{
  "type": "Labs",
  "name": "Capital Preservation Conservative.",
  "shortName": "CapitalPreservation.",
  "currency": "EUR",
  "launchAssets": 100000000.0255,
  "isHedge": true,
  "strategyId": 1,
  "riskLevel": "Medium",
  "universeType": "FixedIncome",
  "referenceIndexSId": 65789,
  "volatility": 0.5,
  "referencePortfolioLabsId": 12567,
  "fees": {
    "managementFee": 0.25,
    "performanceFee": 0.01,
    "performanceFeeMargin": 0.1,
    "performanceFeeReference": 25641,
    "transactionFee": 0.012
  },
  "recos": [
    {
      "date": 20171110,
      "executionDate": 20171112,
      "ordes": [
        {
          "symbolId": 100035,
          "recoWeight": 0.0240069671,
          "recoAmount": 1200348.354183636,
          "recoShares": 6852.0855930108,
          "currentWeight": 0.0309952304,
          "currentAmount": 1549761.52,
          "currentShares": 8846.6806713095,
          "orderWeight": 0.0069882633,
          "orderAmount": 349413.1658163641,
          "orderShares": 1994.5950782987,
          "orderType": "SELL",
          "weightInPortfolio": 0.0309952304,
          "proposedWeight": 0.0309952304
        }
      ]
    }
  ],
  "riskLim": 0.05
}

PortfolioEditRequest: object

Parámetros de modificación de la cartera.

portfolioId: integer

Identificador del portfolio.

shortName: string

Abreviación del nombre de la cartera.

launchAssets: number

Patrimonio de partida de la cartera.

isHedgeAdviced: boolean

Si la cartera isHedge.

strategyId: integer

Identificador de la estrategia utilizada en las recomendaciones de la cartera.

riskLevel: string

Nivel de riesgo de la cartera.

referenceIndexSId: integer

Identificador del symbol utilizado como indice de referencia.

referencePortfolioLabsId: integer

Identificador del portfolio Labs de referencia.

fees: PortfolioFees
Example
{
  "portfolioId": 10871,
  "shortName": "CapitalPreservation.",
  "launchAssets": 100000000.0255,
  "isHedgeAdviced": true,
  "strategyId": 1,
  "riskLevel": "Medium",
  "referenceIndexSId": 65789,
  "referencePortfolioLabsId": 12567,
  "fees": {
    "managementFee": 0.25,
    "performanceFee": 0.01,
    "performanceFeeMargin": 0.1,
    "performanceFeeReference": 25641,
    "transactionFee": 0.012
  }
}

PortfolioRequestRecommendation: object

Recomendaciones sobre la cartera.

date: string

Fecha en formato YYYYMMDD.

executionDate: string

Fecha en formato YYYYMMDD.

ordes: object[]
Example
{
  "date": 20171110,
  "executionDate": 20171112,
  "ordes": [
    {
      "symbolId": 100035,
      "recoWeight": 0.0240069671,
      "recoAmount": 1200348.354183636,
      "recoShares": 6852.0855930108,
      "currentWeight": 0.0309952304,
      "currentAmount": 1549761.52,
      "currentShares": 8846.6806713095,
      "orderWeight": 0.0069882633,
      "orderAmount": 349413.1658163641,
      "orderShares": 1994.5950782987,
      "orderType": "SELL",
      "weightInPortfolio": 0.0309952304,
      "proposedWeight": 0.0309952304
    }
  ]
}

Metaportfolio: object

Información de un metaportfolio.

id: integer

Identificador del metaportfolio.

name: string

Nombre del metaportoflio.

isPaper: boolean

Indica si es paper

simulationSid: integer

Identificador del symbol de la simualción asociada al metaportfolio.

Example
{
  "id": 190,
  "name": "BICE Tendencias",
  "isPaper": "boolean",
  "simulationSid": 89929
}

RecommendationOrder: object

Operaciones recomendadas sobre la cartera.

symbolId: integer

Identificador interno del symbol asociado a la posición.

recoWeight: number

Nuevo peso recomendado para symbol en la cartera. Es el peso elegido por el usuario (coincide con proposedWeight si el usuario no hace ninguna modificación)

recoAmount: number

Nuevo Número de subscripciones del symbol en la cartera.

recoShares: number

Nuevo Número de participaciones del symbol en la cartera.

currentWeight: number

Peso actual del symbol en la cartera (con respecto al compartimento).

currentAmount: number

Número de subscripciones actual del symbol en la cartera.

currentShares: number

Número de participaciones actual del symbol en la cartera.

orderWeight: number

Peso para el symbol del movimiento recomendado en la cartera (diferencia entre peso en cartera y peso recomendado).

orderAmount: number

Número de subscripciones del symbol asocidos al movimiento de la reco en la cartera.

orderShares: number

Número de participaciones del symbol asocidos al movimiento de la reco en la cartera.

orderType: string

Tipo de order.

weightInPortfolio: number

Peso actual del symbol en la cartera (con respecto al portfolio).

proposedWeight: number

Nuevo peso recomendado para symbol en la cartera. Es el peso decidido por la máquina, sin intervención del usuario.

Example
{
  "symbolId": 100035,
  "recoWeight": 0.0240069671,
  "recoAmount": 1200348.354183636,
  "recoShares": 6852.0855930108,
  "currentWeight": 0.0309952304,
  "currentAmount": 1549761.52,
  "currentShares": 8846.6806713095,
  "orderWeight": 0.0069882633,
  "orderAmount": 349413.1658163641,
  "orderShares": 1994.5950782987,
  "orderType": "SELL",
  "weightInPortfolio": 0.0309952304,
  "proposedWeight": 0.0309952304
}

PortfolioFees: object

Fees de una cartera

managementFee: number

La comisión de gestión

performanceFee: number

La comisión de éxito, que queda definida mediante un porcentaje

performanceFeeMargin: number

Margen a sumar a la comisión de éxito

performanceFeeReference: integer

Índice de referencia para aplicar la comisión de éxito

transactionFee: number

La comisión aplicada a cada una de las operaciones

Example
{
  "managementFee": 0.25,
  "performanceFee": 0.01,
  "performanceFeeMargin": 0.1,
  "performanceFeeReference": 25641,
  "transactionFee": 0.012
}

Fee: object

Fees de una cartera

managementFee: integer

La comisión de gestión

performanceFee: number

La comisión de éxito, que queda definida mediante un porcentaje

performanceFeeMargin: number

Margen a sumar a la comisión de éxito

performanceFeeReference: integer

Índice de referencia para aplicar la comisión de éxito

transactionFee: number

La comisión aplicada a cada una de las operaciones

isHedged: boolean

Cartera cubierta o descubierta

Example
{
  "managementFee": 0.02,
  "performanceFee": 0.01,
  "performanceFeeMargin": 0.1,
  "performanceFeeReference": 214523,
  "transactionFee": 0.012,
  "isHedged": true
}

Pattern: object

Patrón de fechas. Sigue el estándar iCalendar. El patrón está definido en la zona horaria de Madrid.

freq: string

Frecuencia con la que se ejecuta el patrón. Puede ser 'daily' o 'weekly'

interval: string

Intervalo entre cada iteración de la frecuencia. Por ejemplo, si tiene frecuencia semanal y su valor es 2, se ejecutará cada 2 semanas. Por defecto es 1.

firstDate: string

Fecha a partir de la cual se genera el patrón.

byweekday: integer[]

Entero o lista de enteros que representan a los días de la semana de Lunes a Viernes comenzando por 0 (Lunes=0, Martes=1,...)

Example
{
  "freq": "daily",
  "interval": 1,
  "firstDate": "20170102",
  "byweekday": [
    [
      0,
      2,
      4
    ]
  ]
}

OperativeOffset: object

Offset operativo. Es un entero que indica el desplazamiento en número de días entre la fecha de la recomendación y la fecha de ejecución de sus órdenes

operativeOffset: integer

Desplazamiento en número de días entre la fecha de la recomendación y la fecha de ejecución de sus órdenes

Example
{
  "operativeOffset": 1
}