// obtains the data and calculates the grid of results private static void calculate(CalculationRunner runner) { // the trades that will have measures calculated List<Trade> trades = createCdsTrades(); // the columns, specifying the measures to be calculated List<Column> columns = ImmutableList.of( Column.of(Measure.PRESENT_VALUE), Column.of(Measure.PAR_RATE), Column.of(Measure.RECOVERY01), Column.of(Measure.JUMP_TO_DEFAULT), Column.of(Measure.IR01_PARALLEL_PAR), Column.of(Measure.IR01_PARALLEL_ZERO), Column.of(Measure.CS01_PARALLEL_PAR), Column.of(Measure.CS01_PARALLEL_HAZARD), Column.of(Measure.IR01_BUCKETED_PAR), Column.of(Measure.IR01_BUCKETED_ZERO), Column.of(Measure.CS01_BUCKETED_PAR), Column.of(Measure.CS01_BUCKETED_HAZARD)); // use the built-in example market data ExampleMarketDataBuilder marketDataBuilder = ExampleMarketData.builder(); // the complete set of rules for calculating measures CalculationRules rules = CalculationRules.builder() .pricingRules(StandardComponents.pricingRules()) .marketDataRules(marketDataBuilder.rules()) .build(); // build a market data snapshot for the valuation date LocalDate valuationDate = LocalDate.of(2014, 10, 16); MarketEnvironment marketSnapshot = marketDataBuilder.buildSnapshot(valuationDate); // calculate the results Results results = runner.calculateSingleScenario(rules, trades, columns, marketSnapshot); // use the report runner to transform the engine results into a trade report ReportCalculationResults calculationResults = ReportCalculationResults.of(valuationDate, trades, columns, results); TradeReportTemplate reportTemplate = ExampleData.loadTradeReportTemplate("cds-report-template"); TradeReport tradeReport = TradeReport.of(calculationResults, reportTemplate); tradeReport.writeAsciiTable(System.out); }