Estoy empezando a trabajar con las opciones de datos de optionmetrics. Yo uso de los marcos de datos, pero parece que xts o el zoológico de objetos son el camino a seguir por las características y la velocidad. No puedo calcular el mejor trabajo para obtener 1 fila por fecha. Debo hacer una lista de xts objetos con un objeto por optionid?
Aquí está mi enfoque actual: estoy tratando de precio superior momentos mirando la devuelve a cubierto de las carteras de índice S&P 500 opciones, así que realmente necesita para el partido del próximo período el precio de la opción con este período de la fecha. Yo uso una trama de datos con las fechas como un Date
de la clase y se desprenda de la fecha, optionid, y el precio de la opción (boa) columnas. Yo adaptará al ancho, con la optionid como los nombres de las columnas y cambiar la fecha de vuelta (aquí hago a diario, pero también puede ser cualquier período de tenencia). Entonces me derrita de vuelta a largo dataframe y mezcla de nuevo en la estructura de datos original. Voy a dar el código de abajo.
Si yo hago esto por tanto las llamadas y pone, entonces puedo combinar en la fecha de strike y vencimiento y forma de cubrirse las carteras. Este enfoque funciona bastante bien, pero no parece muy extensible y, probablemente, haciendo caso omiso de un montón de buenas herramientas en R. ahora mismo sólo estoy mirando las opciones de índice, pero tal vez más adelante voy a estar mirando a la sección transversal, por lo que la velocidad será muy útil.
¿Cómo ir sobre la forma de trabajar con las opciones de datos en R? Gracias!
Aquí está el código:
> head(call.l)
date exdate dte optionid strike close Xms boa delta
1 1996-01-04 1996-03-16 72 10003226 600 617.7 -17.7 25.250 0.768930
2 1996-01-04 1996-02-17 44 10016457 570 617.7 -47.7 48.750 0.000000
3 1996-01-04 1996-06-22 170 10019107 595 617.7 -22.7 39.000 0.732626
4 1996-01-04 1997-06-21 534 10050656 700 617.7 82.3 15.750 0.294790
5 1996-01-04 1996-02-17 44 10060564 615 617.7 -2.7 11.000 0.599153
6 1996-01-04 1996-02-17 44 10091463 655 617.7 37.3 0.375 0.046054
temp.l <- call.l[, c("date", "optionid", "boa")]
temp.w <- dcast(temp.l, formula = "date ~ optionid", value_var = "boa")
temp.w <- temp.w[ order(temp.w[, "date"]), ]
temp.w.shift <- tail(temp.w, -1)
temp.w.shift[, "date"] <- head(temp.w[, "date"], -1)
temp.l.shift <- melt(temp.w.shift, id.vars = "date", variable.name = "optionid", value.name = "boa.fut", na.rm = T)
call.l.new <- merge(call.l, temp.l.shift)
> head(subset(call.l.new, strike == 615))
date optionid exdate dte strike close Xms boa delta boa.fut
5 1996-01-04 10060564 1996-02-17 44 615 617.70 -2.70 11.000 0.599153 10.6250
43 1996-01-04 10372012 1996-03-16 72 615 617.70 -2.70 15.000 0.593709 14.6250
80 1996-01-04 10823593 1996-01-20 16 615 617.70 -2.70 7.750 0.597414 6.0000
144 1996-01-05 10060564 1996-02-17 43 615 616.71 -1.71 10.625 0.577407 12.2500
182 1996-01-05 10372012 1996-03-16 71 615 616.71 -1.71 14.625 0.578089 16.2500
219 1996-01-05 10823593 1996-01-20 15 615 616.71 -1.71 6.000 0.584558 7.0625