10 votos

Generación (o seguimiento) del índice de materias primas DJUBS

Dow Jones y UBS publican una de las familias de índices de materias primas más populares, el Índice de Materias Primas Dow Jones-UBS y sus subíndices. Proporcionan un manual detallado que describe la composición del índice y sus cambios diarios, disponible en https://us.spindices.com/indices/commodities/dow-jones-commodity-index

He intentado implementar un código que sigue la descripción en el manual, pero dadas las comillas de cierre de los varios componentes, no puedo igualar los valores de fin de día publicados por DJUBS.

¿Alguien ha tenido éxito en esta tarea y está dispuesto a compartir su trabajo? Cualquier lenguaje de programación probablemente funcionará, la forma del cálculo será la misma sin importar cómo se desarrolle.

-- para aquellos que deseen más detalles, ver lo siguiente

  1. La metodología de cálculo adecuada se describe en el Manual del Índice de Materias Primas DJUBS, que está disponible en la página a la que enlazo arriba. El mejor resumen del proceso aparece en la página 13 del libro, donde dice "Una vez que se determinan los Multipliadores del Índice de Materias Primas, el cálculo del DJ-UBS CI es un proceso aritmético en el que los CIMs para las Materias Primas del Índice se multiplican por los precios respectivos en dólares estadounidenses de los Contratos Designados aplicables. Los productos se suman. El cambio porcentual diario en esta suma se aplica entonces al valor del DJ-UBS CI del día anterior para calcular el valor actual del DJ-UBS CI."

    Por lo tanto, necesitamos multiplicar los Multipliadores del Índice de Materias Primas (que se determinan anualmente, y se enumeran en el manual) por los precios en dólares estadounidenses de los contratos designados (las materias primas en cuestión se enumeran en el manual, al igual que la tabla para seleccionar cuál futuro poseer en cualquier momento dado). Sumar el CIM*PrecioDólar para dos fechas y escalar el índice por el cambio porcentual entre las fechas (asumiendo que no estamos en el período de roll, que por simplicidad, asumamos que no lo estamos).

  2. Los CIMs aparecen en la página 34 del manual.

  3. La tabla de selección de futuros aparece en la página 35

  4. Los Multipliadores para la conversión de precios en USD aparecen en la página 36

Mi código está en Mathematica y aquí está porque la gente pregunta:

djubsCashFrom2012[dateList_List] := 
 Total[Table[
   preppedCIMs[[i]][[2]]*(1/
      preppedMultipliers[[i]][[2]])*
    priceFromDatabaseOrBBG[
     futureFromDate[dateList, preppedCIMs[[i]][[1]], 
      calendar -> "djubs", offset -> 0, rolloverRule -> "djubs"], 
     dateList], {i, 1, Length[preppedCIMs]}]]

Para que tengas una idea de los componentes, aquí está la lista de contratos involucrados

{{"Aluminio", "LAN2 Comdty"}, {"Crudo Brent", 
  "COU2 Comdty"}, {"Café", "KCN2 Comdty"}, {"Cobre", 
  "HGN2 Comdty"}, {"Maíz", "C N2 Comdty"}, {"Algodón", 
  "CTN2 Comdty"}, {"Oro", "GCQ2 Comdty"}, {"Aceite de Calefacción", 
  "HON2 Comdty"}, {"Cerdos Magros", "LHN2 Comdty"}, {"Ganado en Vivo", 
  "LCQ2 Comdty"}, {"Gas Natural", "NGN2 Comdty"}, {"Níquel", 
  "LNN2 Comdty"}, {"Plata", "SIN2 Comdty"}, {"Aceite de Soja", 
  "BON2 Comdty"}, {"Soja", "S N2 Comdty"}, {"Azúcar", 
  "SBN2 Comdty"}, {"Gasolina Sin Plomo (RBOB)", 
  "XBN2 Comdty"}, {"Trigo", "W N2 Comdty"}, {"Crudo WTI", 
  "CLN2 Comdty"}, {"Zinc", "LXN2 Comdty"}}

Aquí está la lista de Multipliadores en USD

{{"Aluminio", 1}, {"Crudo Brent", 1}, {"Café", 
    100}, {"Cobre", 100}, {"Maíz", 100}, {"Algodón", 100}, {"Oro", 
    1}, {"Aceite de Calefacción", 1}, {"Cerdos Magros", 100}, {"Ganado en Vivo", 
    100}, {"Gas Natural", 1}, {"Níquel", 1}, {"Plata", 
    100}, {"Aceite de Soja", 100}, {"Soja", 100}, {"Azúcar", 
    100}, {"Gasolina Sin Plomo (RBOB)", 1}, {"Trigo", 
    100}, {"Crudo WTI", 1}, {"Zinc", 1}};

Y aquí están los Multipliadores del Índice de Materias Primas

{{"Aluminio", 0.12200124`}, {"Crudo Brent", 
    2.01846373`}, {"Café", 49.71828827`}, {"Cobre", 
    88.13795172`}, {"Maíz", 44.42764359`}, {"Algodón", 
    89.42000933`}, {"Oro", 0.25961493`}, {"Aceite de Calefacción", 
    48.39480046`}, {"Cerdos Magros", 107.9219512`}, {"Ganado en Vivo", 
    129.4759932`}, {"Gas Natural", 148.9289604`}, {"Níquel", 
    0.00589452`}, {"Plata", 4.1377227`}, {"Aceite de Soja", 
    282.7408585`}, {"Soja", 25.37581892`}, {"Azúcar", 
    691.6310707`}, {"Gasolina Sin Plomo (RBOB)", 
    52.80986115`}, {"Trigo", 34.03893139`}, {"Crudo WTI", 
    4.07921265`}, {"Zinc", 0.07223231`}};

Para una prueba simple, toma los precios de las materias primas el 15/5 y 16/5 de este año

Precios del 15/5

{{"Aluminio", 2013.}, {"Crudo Brent", 111,45}, {"Café", 
  178,4}, {"Cobre", 351,75}, {"Maíz", 597,25}, {"Algodón", 
  79,16}, {"Oro", 1557,1}, {"Aceite de Calefacción", 293,86}, {"Cerdos Magros", 
  86,4}, {"Ganado en Vivo", 116,425}, {"Gas Natural", 2,568}, {"Níquel", 
  16977.}, {"Plata", 28,08}, {"Aceite de Soja", 51,47}, {"Soja", 
  1413.}, {"Azúcar", 20,4}, {"Gasolina Sin Plomo (RBOB)", 
  289,16}, {"Trigo", 608,5}, {"Crudo WTI", 94,35}, {"Zinc", 1931,75}}

Precios del 16/5

{{"Aluminio", 2023.}, {"Crudo Brent", 109,75}, {"Café", 
  178,}, {"Cobre", 347,8}, {"Maíz", 620,}, {"Algodón", 
  76,97}, {"Oro", 1536,6}, {"Aceite de Calefacción", 290,39}, {"Cerdos Magros", 
  86,5}, {"Ganado en Vivo", 116,875}, {"Gas Natural", 2,687}, {"Níquel", 
  16985.}, {"Plata", 27,196}, {"Aceite de Soja", 50,43}, {"Soja", 
  1422.}, {"Azúcar", 20,73}, {"Gasolina Sin Plomo (RBOB)", 
  286,51}, {"Trigo", 638,75}, {"Crudo WTI", 93,19}, {"Zinc", 1895,75}}

El cambio de índice publicado por DJUBS del 15 de Junio al 16 de Junio fue +0,328%, pero utilizando mi metodología tengo -0,866%.

0 votos

¿Puedes mostrar el código que escribiste? Tal vez podamos solucionarlo aquí.

0 votos

Y probablemente deberías agregar junto con el código cuál es el procedimiento en el manual. O al menos proporcionar el enlace a él.

3voto

Akash Puntos 8

Resulta que, en una vida pasada, formé parte del equipo que creó los índices de materias primas UBS-CMCI...

Tu problema (probablemente) radicará en la discrepancia entre la metodología de los roll-overs mensuales de la metodología de roll-overs del índice y los roll-overs en los contratos genéricos de primer y segundo mes de Bloomberg. La mayor parte del tiempo, estos se equipararán perfectamente. Pero ocasionalmente, los puntos más finos de las reglas de los proveedores de índices no se reflejarán en las suposiciones genéricas de un proveedor de datos.

Por lo tanto, en tu código a continuación, habrá un precio diferente en una de las materias primas, mirando los compromisos contractuales del corredor, a lo que dice el algoritmo de un proveedor de datos sobre lo mismo.

¿Se resuelve tu problema (al menos en su mayoría) al día siguiente? Eso suele ser la gran "pista" aquí (aunque los tiempos de roll-over pueden ser enormemente importantes en tiempos volátiles, especialmente aquel infame -$34/barril de WTI en mayo)...

0 votos

¿Es correcto el uso de contratos del próximo mes ("N2") arriba? ¿O es el rollo comenzando ya que es el tercer miércoles? Cuando revisé la última hoja de cálculo de DJ-UBS, todos los contratos del mes principal estaban ahí, pero no estamos justo antes de ninguna expiración.

1 votos

El próximo contrato (xxx1) es el predeterminado y líquido; es el momento del cambio de xxx1 a xxx2 lo que se cuestiona aquí. Tenga en cuenta que xxx2 no necesariamente tiene que ser el próximo mes o el próximo trimestre en todas las materias primas.

1 votos

Lo siento, malinterpreté tu pregunta aquí. N2 arriba se refiere específicamente a los contratos del 12 de julio (y Q's a agosto), es decir, todos eran el contrato del mes anterior en ese momento. El problema es que DJ-UBS obviamente debe haber hecho referencia a un contrato diferente o un cierre diferente en uno o más de estos contratos. ¡La premisa entera de CMCI era evitar este tipo de problema rodando iterativamente un poco del mes anterior al siguiente cada día, precisamente para evitar este tipo de problema de roll!

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X