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
-
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).
-
Los CIMs aparecen en la página 34 del manual.
-
La tabla de selección de futuros aparece en la página 35
-
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.