The pricing process of Asian Geometric Pricing engine is as follows:
- Generate independent stock paths by using Mersenne Twister Uniform MT19937 Random Number Generator (RNG) followed by Inverse Cumulative Normal Uniform Random Numbers.
- Start at \(t = 0\) and calculate the stock price of each path firstly in order to achieve II = 1.
- Transfer the geometric average of stock price to sum of lognormal stock price.
- Accumulate the sum of lognormal stock price using the following analytical solution.
\[Price_{Geometric} = S_0*exp((riskFreeRate - dividend - 0.5*volatility^2)dt)^\frac{n+1}{2} *\]
\[exp(\sum_{i=0}^{n-1} \frac{n-i}{n}*volatility*\sqrt{dt}*dw_i)\]
- Calculate the final payoff by using a fixed strike price.
\[Payoff = \max(0,Strike - Price_t) \> for \> call \> options\]
\[Payoff = \max(0,Price_t - Strike) \> for \> put \> options\]
The pricing architecture on FPGA can be shown as the following figure:
Note
The 3 figures above shows the pricing part of McAsianAPEngine, McAsianASEngine and McAsianGPEngine respectively; the other parts, for example, PathGenerator, MCSimulation and other modules, are the same as in MCEuropeanEngine.