Определяем цену опционов на VIX по историческим данным

Автор: Александр Кургузкин (mehanizator).

Берем исторические данные по VIX, например, отсюда, кладем в файл. Пишем в Java код (используется Guava):

public class VixFuture {

public static String fmt(double v) {

return String.format(Locale.US, «%+.6f», v);

}

public static void main(String[] args) throws IOException {

String fileName = «c:/test/bars/vix.csv»;

// собираем в лист клозы из файла

List<Double> data = Lists.newArrayList();

for (String line : Files.readLines(new File(fileName), Charset.defaultCharset())) {

String[] ss = line.trim().split(«,»);

data.add(Double.valueOf(ss[4]));

}

int days = 15; // дней до экспирации

double price = 13.74; // текущая цена базового актива

double maxDiff = 0.07; // величина допустимого отклонения по цене — берем только случаи с ценой близкой текущей

for (double strike = 12; strike <= 15; strike += 1) {

double money = price — strike;

double strikeDiff = (strike / price — 1);

int n = 0;

double calls = 0, puts = 0;

for (int i = 0; i < data.size() — days; ++i) {

double vix = data.get(i);

// отклонение vix от текущей цены

double diff = Math.abs(Math.log(vix / price));

if (diff < maxDiff) {

double v = data.get(i + days) / vix — 1;

calls += v > strikeDiff ? v : 0;

puts += v < strikeDiff ? -v : 0;

++n;

}

}

calls = calls * price / n + (money > 0 ? money : 0);

puts = puts * price / n + (money < 0 ? -money : 0);

System.out.println(n + » случая из » + (data.size() — days) + «, цена(» + price + «) страйк(» + strike + «): колл(» + fmt(calls) + «, пут(» + fmt(puts) + «)»);

}

}

}

Результат:

657 случая из 5838, цена(13.74) страйк(12.0): колл(+2.366494, пут(+0.347060)

657 случая из 5838, цена(13.74) страйк(13.0): колл(+1.634629, пут(+0.615195)

657 случая из 5838, цена(13.74) страйк(14.0): колл(+0.944900, пут(+0.925466)

657 случая из 5838, цена(13.74) страйк(15.0): колл(+0.833420, пут(+1.813987)

Сравниваем с текущей бордой опционов:

VIX1317D12-E (2.65) — VIX1317P12-E (0.10)

VIX1317D13-E (1.95) — VIX1317P13-E (0.35)

VIX1317D14-E (1.45) — VIX1317P14-E (0.90)

VIX1317D15-E (1.15) — VIX1317P15-E (1.55)

Много думаем.


Подпишитесь на уведомления о новых постах

И получите доступ к специальным материалам сайта