DisplayVCHedgeSens2 Example VBA

VBA Example - DisplayVCHedgeSens2![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here DisplayVCHedgeSens2(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( DisplayVCHedgeSens2Part() ). ' which contains the answer that we are looking for.![]() ' The first function here is simply an example of how to construct the parameters ' in order acquire either a string Key (that is to be passed to other functions) ' or a computed result.![]() ' If you are viewing this source code from the chm or web help file you can use the ' outlining features to collapse certain sections of the code for better readability. ' ################################################################################## ![]() ![]() ' Add a reference to the CTQL_VBA_API.xla file via the Tools->Reference menu (within the VBA editor). ' This holds VBA class objects for communicating with the CTQuantToolsXL20.dll Excel Addin ' This XLA does not use COM and has access to all the financial objects created via the spreadsheet functions.![]() ![]() ' Some global parameter in order to append to user defined keys. ' We use it here to ensure that we have unique Keys (in the case several of our examples ' use the same key-name) ' In normal use, a user defined string will be used and so this variable will be pointless. Global nCTQryIRRiskGlobal As Long Public Function VB_EX_DisplayVCHedgeSens2() As Variant![]() nCTQryIRRiskGlobal = nCTQryIRRiskGlobal + 1 On Error GoTo err_Generic ![]() ' Creates a centralized valuation date object.![]() Dim MyValuationDate As String MyValuationDate = _ ValueDateObjPart()![]() ![]() ![]() ' UK date calendar used within the UK stock exchange.![]() Dim MyCALUKExchange As String MyCALUKExchange = _ CALUKExchangePart()![]() ![]() ![]() ' EURO calendar used for holiday adjustments.![]() Dim MyEuroCal As String MyEuroCal = _ CALEUROPart()![]() ![]() ![]() ' Creates a Deposit template which is almost identical to a Libor ' Index, but without the YieldCurve information. Dim MyDepoTPL As String MyDepoTPL = _ CreateDepoTemplatePart( _ MyCALUKExchange, _ MyEuroCal)![]() ![]() ![]() ' Creates a Swap template which is almost identical to the definition ' of the parameters of a swap contract, but without the swap duration, ' buysell, and YieldCurve information. Dim MySwapTPL As String MySwapTPL = _ CreateSwapTemplatePart( _ MyEuroCal, _ MyDepoTPL)![]() ![]() ![]() ' Creates a yield curve using market rates (No cross-currency ' Swaps). Dim MyMiniYC As String MyMiniYC = _ MKTYC_D__3Part( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ![]() ![]() ' Creates a discount curve from Tenors (or Dates) and discount ' factor inputs. Dim MyDiscountCurve2 As String MyDiscountCurve2 = _ DiscountCurve2Part( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ![]() ![]() ' Creates a SABR curve to model the dynamics of the volatility ' curve (smile). Dim MySABRVolCurve As String MySABRVolCurve = _ SABRVolCurvePart( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ![]() ![]() ' Given a Fixing YieldCurve, Discounting YieldCurve and a VolCurve, ' this function will display the sensitivity matrix (vega) on ' each of the ('option maturity' / 'option underlying') hedge ' instrument combination (for a unit notional). Dim resDisplayVCHedgeSens2 As Variant resDisplayVCHedgeSens2 = _ DisplayVCHedgeSens2Part( _ MyMiniYC, _ MyDiscountCurve2, _ MySABRVolCurve)![]() ' This is the result we are looking for. VB_EX_DisplayVCHedgeSens2 = resDisplayVCHedgeSens2![]() Exit Function err_Generic: MsgBox "Error: " & Err.Number & vbCrLf & Err.Description End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function DisplayVCHedgeSens2Part( _ MyMiniYC As String, _ MyDiscountCurve2 As String, _ MySABRVolCurve As String) As Variant![]() ![]() ' Create example range for parameter DisplayVCHedgeSens2_OptMaturities![]() ' Column vector of 8 rows (indexed from 0, highest index of 7) Dim DisplayVCHedgeSens2_OptMaturities(7, 0) As Variant DisplayVCHedgeSens2_OptMaturities(0, 0) = "3M" DisplayVCHedgeSens2_OptMaturities(1, 0) = "6M" DisplayVCHedgeSens2_OptMaturities(2, 0) = "1Y" DisplayVCHedgeSens2_OptMaturities(3, 0) = "2Y" DisplayVCHedgeSens2_OptMaturities(4, 0) = "3Y" DisplayVCHedgeSens2_OptMaturities(5, 0) = "5Y" DisplayVCHedgeSens2_OptMaturities(6, 0) = "7Y" DisplayVCHedgeSens2_OptMaturities(7, 0) = "10Y" ' Create example range for parameter DisplayVCHedgeSens2_UndMaturities![]() ' Column vector of 10 rows (indexed from 0, highest index of 9) Dim DisplayVCHedgeSens2_UndMaturities(9, 0) As Variant DisplayVCHedgeSens2_UndMaturities(0, 0) = "3M" DisplayVCHedgeSens2_UndMaturities(1, 0) = "6M" DisplayVCHedgeSens2_UndMaturities(2, 0) = "1Y" DisplayVCHedgeSens2_UndMaturities(3, 0) = "2Y" DisplayVCHedgeSens2_UndMaturities(4, 0) = "3Y" DisplayVCHedgeSens2_UndMaturities(5, 0) = "5Y" DisplayVCHedgeSens2_UndMaturities(6, 0) = "7Y" DisplayVCHedgeSens2_UndMaturities(7, 0) = "10Y" DisplayVCHedgeSens2_UndMaturities(8, 0) = "15Y" DisplayVCHedgeSens2_UndMaturities(9, 0) = "20Y" ![]() ![]() ' Excel function call is : "CT.RSK.DisplayVCHedgeSens2()"![]() ' Given a Fixing YieldCurve, Discounting YieldCurve and a VolCurve, ' this function will display the sensitivity matrix (vega) on ' each of the ('option maturity' / 'option underlying') hedge ' instrument combination (for a unit notional). Dim rDisplayVCHedgeSens2 As Variant ' We call the CreateCTQryIRRisk() function via the CTQL module exposed from the CTQL_VBA_API.xla addin. Dim oCTQryIRRisk As CTQryIRRisk Set oCTQryIRRisk = CTQL.CreateCTQryIRRisk() rDisplayVCHedgeSens2 = oCTQryIRRisk.DisplayVCHedgeSens2( _ MyMiniYC, _ MyDiscountCurve2, _ MySABRVolCurve, _ DisplayVCHedgeSens2_OptMaturities, _ DisplayVCHedgeSens2_UndMaturities)![]() ![]() DisplayVCHedgeSens2Part = rDisplayVCHedgeSens2 End Function ![]() ![]() ![]() ![]() |