EquitySABRVolCurve Example VBNET

VB.NET Example - EquitySABRVolCurve![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here EquitySABRVolCurve(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( EquitySABRVolCurvePart() ). ' 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. ' ################################################################################## ![]() Imports System![]() ' Optional using instruction. We will use a mix of utilising fully qualified names (in the case of the financial objects) ' and using the reduced version (in the case of declaring enumerations). ' This is just to demostrate both types of coding.![]() Imports CTQL ' You need to add a reference to the QuantToolsNET.v2.dll also![]() ' 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 nCTVolatiltyCurvesGlobal As Integer ' Used by function parameters that take an optional range value. ' In Excel we simply omit the value, within the API functions, ' we pass an empty range object Global oEmptyRange As CTQL.CTRangeData Public Function VB_EX_EquitySABRVolCurve() As String![]() nCTVolatiltyCurvesGlobal = nCTVolatiltyCurvesGlobal + 1 ![]() Dim szErrorMsg As String Try![]() ![]() ' Creates a centralized valuation date object.![]() Dim MyValuationDate As String MyValuationDate = _ ValueDateObjPart()![]() ![]() ![]() ' EURO calendar used for holiday adjustments.![]() Dim MyEuroCal As String MyEuroCal = _ CALEUROPart()![]() ![]() ![]() ' Creates an equity/FX/commodity SABR object to model the dynamics ' of the volatility curve (smile). Dim MyEquitySABRVolCurve As String MyEquitySABRVolCurve = _ EquitySABRVolCurvePart( _ MyValuationDate, _ MyEuroCal)![]() ' This is the result we are looking for. VB_EX_EquitySABRVolCurve = MyEquitySABRVolCurve![]() Catch e As Exception szErrorMsg = e.Message Throw e Catch e As System.ApplicationException szData = e.Message End Try End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function EquitySABRVolCurvePart( _ MyValuationDate As String, _ MyEuroCal As String) As String![]() ![]() ' Create example range for parameter EquitySABRVolCurve_SABRMatrix![]() ![]() Dim EquitySABRVolCurve_SABRMatrix _ As CTQL.CTRangeData![]() Dim EquitySABRVolCurve_SABRMatrix_builder _ As New System.Text.StringBuilder(100) ' We could set the value for each cell individually, but for display ' purposes, this is quicker and more informative. EquitySABRVolCurve_SABRMatrix_builder.Append("{") EquitySABRVolCurve_SABRMatrix_builder.Append("'Opt\SABR' | ATM | ALPHA | BETA | RHO | FWD ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'3M' | 20.01 | 3.8 | 0.7 | 0.25 | 207.04 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'6M' | 20.02 | 3.8 | 0.7 | 0.25 | 215.04 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'9M' | 20.02 | 3.8 | 0.7 | 0.25 | 223.68 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'12M' | 20.03 | 3.81 | 0.7 | 0.25 | 229.31 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'2Y' | 20.04 | 3.81 | 0.7 | 0.25 | 237.12 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'3Y' | 20.05 | 3.81 | 0.7 | 0.25 | 247.11 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'4Y' | 20.06 | 3.81 | 0.7 | 0.25 | 253.04 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'5Y' | 20.07 | 3.81 | 0.7 | 0.25 | 261.81 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'6Y' | 20.08 | 3.81 | 0.7 | 0.25 | 267.77 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'7Y' | 20.09 | 3.81 | 0.7 | 0.25 | 277.48 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'8Y' | 20.09 | 3.82 | 0.7 | 0.25 | 282.77 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'9Y' | 20.1 | 3.82 | 0.7 | 0.25 | 290.6 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'10Y' | 20.11 | 3.82 | 0.7 | 0.25 | 295.62 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'11Y' | 20.12 | 3.82 | 0.7 | 0.25 | 301.61 ;") EquitySABRVolCurve_SABRMatrix_builder.Append("'12Y' | 20.13 | 3.82 | 0.7 | 0.25 | 306.96") EquitySABRVolCurve_SABRMatrix_builder.Append("}") EquitySABRVolCurve_SABRMatrix.RangeFromStr _ ( _ EquitySABRVolCurve_SABRMatrix_builder.ToString() _ ) ![]() ![]() ![]() ' Key value to use as a handle for the created object Dim MyEquitySABRVolCurve As String MyEquitySABRVolCurve = "MyEquitySABRVolCurve" + "_" + CStr(nCTVolatiltyCurvesGlobal)![]() ![]() ' When creating this object for the first time, set this parameter ' to a positive value. Dim Reload As Integer Reload = 1![]() ![]() ' Number of days between the Exercise date of the options and ' the STARTDATE of the instrument. Dim SettleDays As Integer SettleDays = 2![]() ![]() ' Is the input volatility entered as a percentage value (true), ' or the raw volatility value (false). Dim DivideVolBy100 As Boolean DivideVolBy100 = True![]() ![]() ' Business Day Convention. Dim BusDayConv As CTIEnums.BDCEnum BusDayConv = CTIEnums.BDCEnum.BDC_modifiedfollowing![]() ![]() ' DayCounter used for the calculation of option maturity in year ' units. Dim DayCount As CTIEnums.DayCountEnum DayCount = CTIEnums.DayCountEnum.DayCount_30360![]() ![]() ' Interpolation method to use when interpolating the curve for ' vols, - LINEAR, LOGLINEAR, CUBIC. Dim InterpType As CTIEnums.InterpEnum InterpType = CTIEnums.InterpEnum.Interp_LINEAR![]() ' Excel function call is : "CT.CRV.EquitySABRVolCurve()"![]() ' Creates an equity/FX/commodity SABR object to model the dynamics ' of the volatility curve (smile). Dim rEquitySABRVolCurve As String Dim oCTVolatiltyCurves As New CTQL.CTVolatiltyCurves rEquitySABRVolCurve = CTQL.CTVolatiltyCurvesSA.EquitySABRVolCurve( _ MyEquitySABRVolCurve, _ Reload, _ MyValuationDate, _ SettleDays, _ EquitySABRVolCurve_SABRMatrix, _ DivideVolBy100, _ BusDayConv, _ DayCount, _ MyEuroCal, _ InterpType)![]() ![]() EquitySABRVolCurvePart = rEquitySABRVolCurve End Function ![]() ![]() ![]() ![]() |