ExpiryKVolMatrix Example VBNET

VB.NET Example - ExpiryKVolMatrix![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here ExpiryKVolMatrix(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( ExpiryKVolMatrixPart() ). ' 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_ExpiryKVolMatrix() As String![]() nCTVolatiltyCurvesGlobal = nCTVolatiltyCurvesGlobal + 1 ![]() Dim szErrorMsg As String Try![]() ![]() ' 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 volatility matrix. Dim MyExpiryKVolMatrix As String MyExpiryKVolMatrix = _ ExpiryKVolMatrixPart( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ' This is the result we are looking for. VB_EX_ExpiryKVolMatrix = MyExpiryKVolMatrix![]() Catch e As Exception szErrorMsg = e.Message Throw e Catch e As System.ApplicationException szData = e.Message End Try End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function ExpiryKVolMatrixPart( _ MyValuationDate As String, _ MyDepoTPL As String, _ MySwapTPL As String) As String![]() ![]() ' Create example range for parameter ExpiryKVolMatrix_volRange![]() ![]() Dim ExpiryKVolMatrix_volRange _ As CTQL.CTRangeData![]() Dim ExpiryKVolMatrix_volRange_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. ExpiryKVolMatrix_volRange_builder.Append("{") ExpiryKVolMatrix_volRange_builder.Append("'Opt\Strike' | 0.02 | 0.025 | 0.03 | 0.035 | 0.04 | 0.045 | 0.05 | 0.055 | 0.06 | 0.065 | 0.07 ;") ExpiryKVolMatrix_volRange_builder.Append("'3M' | 21.33 | 20.33 | 19.53 | 18.93 | 18.53 | 18.33 | 18.53 | 18.93 | 19.53 | 20.33 | 21.33 ;") ExpiryKVolMatrix_volRange_builder.Append("'6M' | 21.23 | 20.23 | 19.43 | 18.83 | 18.43 | 18.23 | 18.43 | 18.83 | 19.43 | 20.23 | 21.23 ;") ExpiryKVolMatrix_volRange_builder.Append("'9M' | 21.29 | 20.29 | 19.49 | 18.89 | 18.49 | 18.29 | 18.49 | 18.89 | 19.49 | 20.29 | 21.29 ;") ExpiryKVolMatrix_volRange_builder.Append("'12M' | 21.35 | 20.35 | 19.55 | 18.95 | 18.55 | 18.35 | 18.55 | 18.95 | 19.55 | 20.35 | 21.35 ;") ExpiryKVolMatrix_volRange_builder.Append("'2Y' | 21.37 | 20.37 | 19.57 | 18.97 | 18.57 | 18.37 | 18.57 | 18.97 | 19.57 | 20.37 | 21.37 ;") ExpiryKVolMatrix_volRange_builder.Append("'4Y' | 21.34 | 20.34 | 19.54 | 18.94 | 18.54 | 18.34 | 18.54 | 18.94 | 19.54 | 20.34 | 21.34 ;") ExpiryKVolMatrix_volRange_builder.Append("'6Y' | 21.37 | 20.37 | 19.57 | 18.97 | 18.57 | 18.37 | 18.57 | 18.97 | 19.57 | 20.37 | 21.37 ;") ExpiryKVolMatrix_volRange_builder.Append("'8Y' | 21.35 | 20.35 | 19.55 | 18.95 | 18.55 | 18.35 | 18.55 | 18.95 | 19.55 | 20.35 | 21.35 ;") ExpiryKVolMatrix_volRange_builder.Append("'10Y' | 21.37 | 20.37 | 19.57 | 18.97 | 18.57 | 18.37 | 18.57 | 18.97 | 19.57 | 20.37 | 21.37 ;") ExpiryKVolMatrix_volRange_builder.Append("'12Y' | 21.4 | 20.4 | 19.6 | 19 | 18.6 | 18.4 | 18.6 | 19 | 19.6 | 20.4 | 21.4 ;") ExpiryKVolMatrix_volRange_builder.Append("'14Y' | 21.25 | 20.25 | 19.45 | 18.85 | 18.45 | 18.25 | 18.45 | 18.85 | 19.45 | 20.25 | 21.25 ;") ExpiryKVolMatrix_volRange_builder.Append("'16Y' | 21.38 | 20.38 | 19.58 | 18.98 | 18.58 | 18.38 | 18.58 | 18.98 | 19.58 | 20.38 | 21.38 ;") ExpiryKVolMatrix_volRange_builder.Append("'18Y' | 21.29 | 20.29 | 19.49 | 18.89 | 18.49 | 18.29 | 18.49 | 18.89 | 19.49 | 20.29 | 21.29 ;") ExpiryKVolMatrix_volRange_builder.Append("'20Y' | 21.21 | 20.21 | 19.41 | 18.81 | 18.41 | 18.21 | 18.41 | 18.81 | 19.41 | 20.21 | 21.21 ;") ExpiryKVolMatrix_volRange_builder.Append("'22Y' | 21.33 | 20.33 | 19.53 | 18.93 | 18.53 | 18.33 | 18.53 | 18.93 | 19.53 | 20.33 | 21.33") ExpiryKVolMatrix_volRange_builder.Append("}") ExpiryKVolMatrix_volRange.RangeFromStr _ ( _ ExpiryKVolMatrix_volRange_builder.ToString() _ ) ![]() ![]() ![]() ' Key value to use as a handle for the created object Dim MyExpiryKVolMatrix As String MyExpiryKVolMatrix = "MyExpiryKVolMatrix" + "_" + CStr(nCTVolatiltyCurvesGlobal)![]() ![]() ' When creating this object for the first time, set this parameter ' to a positive value. Dim Reload As Integer Reload = 1![]() ![]() ' A tag used to identify this curve (case insensitive) if placed ' within a Volatility curve collection ( via the GroupedVolCurves() ' function ). Dim CurveName As String CurveName = "MyExpiryKVolMatrix"![]() ![]() ' 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![]() ![]() ' The actual underlying that the Volatility matrix represents. Dim UndTenor As String UndTenor = "5Y"![]() ![]() ' DayCounter for converting dates into year fractions. 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.ExpiryKVolMatrix()"![]() ' Creates a volatility matrix. Dim rExpiryKVolMatrix As String Dim oCTVolatiltyCurves As New CTQL.CTVolatiltyCurves rExpiryKVolMatrix = CTQL.CTVolatiltyCurvesSA.ExpiryKVolMatrix( _ MyExpiryKVolMatrix, _ Reload, _ CurveName, _ MyValuationDate, _ SettleDays, _ ExpiryKVolMatrix_volRange, _ DivideVolBy100, _ UndTenor, _ MyDepoTPL, _ MySwapTPL, _ DayCount, _ InterpType)![]() ![]() ExpiryKVolMatrixPart = rExpiryKVolMatrix End Function ![]() ![]() ![]() ![]() |