Theta Proxy XL is a new product from my company Thetaris. It promises speed-ups of several orders of magnitude. Here, I present some benchmark results. These will help you to decide when to apply Theta Proxy XL and when to stay with plain MS Excel.
Test Case 1: European Option VBA Monte-Carlo Code (2 free parameters)
The following code presents a European Option Pricer which is written in VBA. Creating a VBA User-Defined Function (UDF) is simple – just follow the instructions in this article. A detailed description how to use Theta Proxy for speeding-up Excel is available here.
Function EuropeanOption(S0 As Double, K As Double, sigma As Double, r As Double, T As Double) Application.Volatile Dim i As Long, time As Long, N As Long, sumS As Long N = 100000 ReDim S(1 To N) 'Tell VB to initialize using Randomize Rnd -1 'Tell VB to use 0 as seed Randomize 0 'Simulate stock price paths For i = 1 To N S(i) = S0 * Exp((r - 0.5 * sigma ^ 2) * T + sigma * Application.WorksheetFunction.NormSInv(Rnd)) Next i sumS = 0 'Compute payoff For i = 1 To N sumS = sumS + Application.WorksheetFunction.Max(K - S(i), 0) Next i EuropeanOption = Exp(-r * T) * sumS / N End Function
The setting which we analyze:
- S = between 80 and 120
- K = 100
- sigma = between 0.2 and 0.4
- r = 0.05
- T = 1
The value of such an option with these parameters is about 13.159 (S=100, sigma=0.4). The accuracy of the Monte-Carlo Simulation of “EuropeanOption()” is about +-0.1. This is why we use 0.1 as error bound (Epsilon) in Theta Proxy XL, too. The trainings phase of Theta Proxy with these settings requires 180 sec.
Result of 1000 Excel Cells calling the VBA Code “EuropeanOption()”:
- Time pure Excel + VBA: 2459 sec.
- Time Theta Proxy: 0.60 sec.
- Speed-up: 4100x
Test Case 2: European Option (across free parameters)
Ok, the speed-up is significant. But, how long does the learning phase take:
- 1 free parameter: 9 evaluations, (32 sec.), Speed-up: 4400x
- 2 free parameters: 49 evaluations, (180 sec.), Speed-up: 4100x
- 3 free parameters: 225 evaluations (833 sec.), Speed-up: 3700x
- 4 free parameters: 945 evaluations (3510 sec.), Speed-up: 3300x
- 5 free parameters: 3753 evaluations (14211 sec.), Speed-up: 3000x
Test Case 3: Built-in “Sin()”-Function
So, what happens if the function is already quick like the built-in “sin()” function?
- sin(x) function
- x between 0 and 1
The sin() function in Excel is very efficient: I could not compute the time required for 1000 evaluations. That means the time required is less than 0.01 sec while Theta Proxy needs 0.6 sec. That means Theta Proxy is slower than pure Excel for quick built-in functions.
Looking at slow VBA Excel functions like the presented Monte Carlo simulation, Theta Proxy XL can accelerate the evaluation significantly (over 4100x faster). The built-in function “sin()” did not benefit from Theta Proxy training.
Analyzing the Theta Proxy effect on VBA Monte-Carlo simulation, the speed-up varies across the number of parameters. The speed-up factor for one to five trained parameters was lower for more trained parameters, but still above 3000x. The training period requires much more time for five trained parameters than for one trained parameter.