ExpiryKVolMatrix Example VB6





http://www.QuantTools.com
CapeTools Volatility Curves function list
ExpiryKVolMatrix function

Welcome | Documentation format | QuantTools Groups | QuantTools Categories | Licence

Key TAGs | Excel Index | API Index



Example Visual Basic 6 Driver function. Preparing the parameters and the final function call (the result).

High level view of the code structure (resulting in the final function call to ExpiryKVolMatrix() )

These are the financial QuantTools function calls that are used within the examples :





The objects generated by these functions are inter-connected in the following way :




VB6 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. 
    '     ##################################################################################
                        


' Add a reference to the CTQL.dll ActiveX library (dll)

' 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 Long
    
    
Public Function VB_EX_ExpiryKVolMatrix() As String

    nCTVolatiltyCurvesGlobal = nCTVolatiltyCurvesGlobal + 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 volatility matrix.
    Dim MyExpiryKVolMatrix As String
    MyExpiryKVolMatrix = _
        ExpiryKVolMatrixPart( _
        MyValuationDate, _
        MyDepoTPL, _
        MySwapTPL)

    ' This is the result we are looking for.
    VB_EX_ExpiryKVolMatrix = MyExpiryKVolMatrix

            
    
    Exit Function
err_Generic:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description    
    
            
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 Variant
        
        ExpiryKVolMatrix_volRange = vRange.RangeFromStr _
         ( _
        CStr("{") + _
        CStr("'Opt\Strike'     | 0.02     | 0.025     | 0.03     | 0.035     | 0.04     | 0.045     | 0.05     | 0.055     | 0.06     | 0.065     | 0.07 ;") + _
        CStr("'3M'     | 21.33     | 20.33     | 19.53     | 18.93     | 18.53     | 18.33     | 18.53     | 18.93     | 19.53     | 20.33     | 21.33 ;") + _
        CStr("'6M'     | 21.23     | 20.23     | 19.43     | 18.83     | 18.43     | 18.23     | 18.43     | 18.83     | 19.43     | 20.23     | 21.23 ;") + _
        CStr("'9M'     | 21.29     | 20.29     | 19.49     | 18.89     | 18.49     | 18.29     | 18.49     | 18.89     | 19.49     | 20.29     | 21.29 ;") + _
        CStr("'12M'     | 21.35     | 20.35     | 19.55     | 18.95     | 18.55     | 18.35     | 18.55     | 18.95     | 19.55     | 20.35     | 21.35 ;") + _
        CStr("'2Y'     | 21.37     | 20.37     | 19.57     | 18.97     | 18.57     | 18.37     | 18.57     | 18.97     | 19.57     | 20.37     | 21.37 ;") + _
        CStr("'4Y'     | 21.34     | 20.34     | 19.54     | 18.94     | 18.54     | 18.34     | 18.54     | 18.94     | 19.54     | 20.34     | 21.34 ;") + _
        CStr("'6Y'     | 21.37     | 20.37     | 19.57     | 18.97     | 18.57     | 18.37     | 18.57     | 18.97     | 19.57     | 20.37     | 21.37 ;") + _
        CStr("'8Y'     | 21.35     | 20.35     | 19.55     | 18.95     | 18.55     | 18.35     | 18.55     | 18.95     | 19.55     | 20.35     | 21.35 ;") + _
        CStr("'10Y'     | 21.37     | 20.37     | 19.57     | 18.97     | 18.57     | 18.37     | 18.57     | 18.97     | 19.57     | 20.37     | 21.37 ;") + _
        CStr("'12Y'     | 21.4     | 20.4     | 19.6     | 19     | 18.6     | 18.4     | 18.6     | 19     | 19.6     | 20.4     | 21.4 ;") + _
        CStr("'14Y'     | 21.25     | 20.25     | 19.45     | 18.85     | 18.45     | 18.25     | 18.45     | 18.85     | 19.45     | 20.25     | 21.25 ;") + _
        CStr("'16Y'     | 21.38     | 20.38     | 19.58     | 18.98     | 18.58     | 18.38     | 18.58     | 18.98     | 19.58     | 20.38     | 21.38 ;") + _
        CStr("'18Y'     | 21.29     | 20.29     | 19.49     | 18.89     | 18.49     | 18.29     | 18.49     | 18.89     | 19.49     | 20.29     | 21.29 ;") + _
        CStr("'20Y'     | 21.21     | 20.21     | 19.41     | 18.81     | 18.41     | 18.21     | 18.41     | 18.81     | 19.41     | 20.21     | 21.21 ;") + _
        CStr("'22Y'     | 21.33     | 20.33     | 19.53     | 18.93     | 18.53     | 18.33     | 18.53     | 18.93     | 19.53     | 20.33     | 21.33") + _
        CStr("}") _
         )
    



    '    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 Long
        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 Long
        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 DayCountEnum
        DayCount = DayCount_30360


    '    Interpolation method to use when interpolating the curve for 
    '    vols, - LINEAR, LOGLINEAR, CUBIC.
        Dim InterpType As InterpEnum
        InterpType = Interp_LINEAR

                    
    '  Excel function call is : "CT.CRV.ExpiryKVolMatrix()"

    '    Creates a volatility matrix.
        Dim rExpiryKVolMatrix As String 
        Dim oCTVolatiltyCurves As New CTQL.CTVolatiltyCurves
    
        rExpiryKVolMatrix = oCTVolatiltyCurves.ExpiryKVolMatrix( _
                MyExpiryKVolMatrix, _
                Reload, _
                CurveName, _
                MyValuationDate, _
                SettleDays, _
                ExpiryKVolMatrix_volRange, _
                DivideVolBy100, _
                UndTenor, _
                MyDepoTPL, _
                MySwapTPL, _
                DayCount, _
                InterpType)


    ExpiryKVolMatrixPart = rExpiryKVolMatrix
    
End Function                        








Copyright (c) 2003-2007 CapeTools - All Rights Reserved.