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 three figures above shows the pricing part of McAsianAPEngine, McAsianASEngine and McAsianGPEngine respectively. Tthe other parts, for example, PathGenerator, MCSimulation and other modules, are the same as in MCEuropeanEngine.