/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.solutions.library.tool; import java.io.IOException; import java.util.List; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.threeten.bp.ZonedDateTime; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Module; import com.opengamma.sesame.engine.Results; import com.opengamma.solutions.library.engine.EngineModule; import com.opengamma.solutions.library.storage.InMemoryStorageModule; import com.opengamma.solutions.library.storage.SourcesModule; import com.opengamma.solutions.util.ViewUtils; import com.opengamma.util.time.DateUtils; /** * Equity Index Option example */ public class EquityIndexOptionPricerExample { private static final Logger s_logger = LoggerFactory.getLogger(EquityIndexOptionPricerExample.class); private static final String DISCOUNTING_CURVES = "equity-data/curves/discounting-curves.csv"; private static final String FORWARD_CURVES = "equity-data/curves/forward-curves.csv"; private static final String VOLATILITY_SURFACES = "equity-data/vols/vol-surface.csv"; private static final String PRICE_SURFACES = "equity-data/vols/price-surface.csv"; private static final String TRADES = "equity-data/trades/equity-index-options.csv"; private static final List<ZonedDateTime> VALUATION_TIMES = ImmutableList.of(DateUtils.getUTCDate(2015, 4, 27), DateUtils.getUTCDate(2015, 4, 28), DateUtils.getUTCDate(2015, 4, 29), DateUtils.getUTCDate(2015, 5, 1), DateUtils.getUTCDate(2015, 6, 1)); /** * Entry point to running the Equity Index Option Pricer. * Log PV results to the console * @param args, no args are need to run this tool */ public static void main(String[] args) throws IOException { Set<Module> modules = Sets.newHashSet(); modules.add(new InMemoryStorageModule()); modules.add(new SourcesModule()); modules.add(new EngineModule()); Injector injector = Guice.createInjector(modules); EquityIndexOptionPricer pricer = injector.getInstance(EquityIndexOptionPricer.class); for (ZonedDateTime valuation : VALUATION_TIMES) { Results results = pricer.price(valuation, TRADES, DISCOUNTING_CURVES, FORWARD_CURVES, VOLATILITY_SURFACES, false); s_logger.info(valuation.toLocalDate() + " Got results:\n" + ViewUtils.format(results)); } Results results = pricer.price(VALUATION_TIMES.get(0), TRADES, DISCOUNTING_CURVES, FORWARD_CURVES, PRICE_SURFACES, true); s_logger.info(VALUATION_TIMES.get(0) + " Got results:\n" + ViewUtils.format(results)); } }