Theta Proxy promises speed-up of MS Excel UDFs — How fast is it?

· MS Excel, Programming
Authors

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.

Car in Plasma

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
That means the learning phase grows rapidly using more parameters: The growth of the number of evaluations is sub-exponential. But, with 4 or 5 free parameters training can take a significant amount of time.

Test Case 3: Built-in “Sin()”-Function

So, what happens if the function is already quick like the built-in “sin()” function?

Setting:

  • 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.

Conclusion

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.

1 Comment

Comments RSS

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.