в Опционы

Определяем цену опционов на 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)

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