Monte-Carlo European Dow Jones Engine (DJE)

The MC European DJE is a modified Monte Carlo European Option Pricer that is designed specifically to calculate the Dow Jones Industrial Average (DJIA)

Normal MC

In normal Monte Carlo operation, the following operations are done:

  • Calculate the option price at a future date for each asset
  • Calculate Payoff of each asset
  • Derate payoff for each asset

MC DJE

The operation of the Dow Jones Engine is subtly different:

  • Calculate the stock price for each stock
  • Calculate the average of ALL the assets using a supplied Dow Divisor

Typically the DJIA is calculated using 30 specific stocks. The MCEuropeanDJE class can take data arrays for any number of assets.

class xf::fintech::MCEuropeanDJE

#include "xf_fintech_mc_european_dje.hpp"

Overview

The MCEuropeanDJE (Dow Jones Engine) class takes in an array of asset data and calculates a single Dow Jones Industrial Average (DJIA) value.

class MCEuropeanDJE: public xf::fintech::OCLController

// fields

static const int NUM_KERNELS
Inherited Members

Fields
static const int NUM_KERNELS

The following constant defines the number of KERNELS that have been built in the HW…

Methods

run
run overload (1)
int run (
    OptionType* optionType,
    double* stockPrice,
    double* strikePrice,
    double* riskFreeRate,
    double* dividendYield,
    double* volatility,
    double* timeToMaturity,
    double* requiredTolerance,
    unsigned int numAssets,
    double dowDivisor,
    double* DJIAOutput
    )

Process arrays of asset data, until required TOLERANCE is met…

Parameters:

optionType either American/European Call or Put
stockPrice the stock price
strikePrice the strike price
riskFreeRate the risk free interest rate
dividendYield the dividend yield
volatility the volatility
timeToMaturity the time to maturity
requiredTolerance the required tolerance
numAssets the number of assets
dowDivisor the Dow Divisor
DJIAOutput the returned Dow Jones Industrial Average
run overload (2)
int run (
    OptionType* optionType,
    double* stockPrice,
    double* strikePrice,
    double* riskFreeRate,
    double* dividendYield,
    double* volatility,
    double* timeToMaturity,
    unsigned int* requiredSamples,
    unsigned int numAssets,
    double dowDivisor,
    double* DJIAOutput
    )

Process arrays of asset data, for REQUIRED NUMBER OF SAMPLES…

Parameters:

optionType either American/European Call or Put
stockPrice the stock price
strikePrice the strike price
riskFreeRate the risk free interest rate
dividendYield the dividend yield
volatility the volatility
timeToMaturity the time to maturity
requiredSamples the required samples
numAssets the number of assets
dowDivisor the Dow Divisor
DJIAOutput the returned Dow Jones Industrial Average
getLastRunTime
long long int getLastRunTime (void)

This method returns the time the execution of the last call to run() took

Returns:

Execution time in microseconds