QBSBondOption Example VBA





http://www.QuantTools.com
CapeTools Bond Options function list
QBSBondOption function

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

Key TAGs | Excel Index | API Index



Example Excel VBA 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 QBSBondOption() )

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 :




VBA Example - QBSBondOption





    '     ##################################################################################
    '     The first function here QBSBondOption(), contains a series of
    '     function calls leading upto the main function call, the second function
    '     within this file ( QBSBondOptionPart() ).
    '     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 nCTBondOptionsGlobal As Long
    
    
Public Function VB_EX_QBSBondOption() As String

    nCTBondOptionsGlobal = nCTBondOptionsGlobal + 1
            
    
On Error GoTo err_Generic
        
            
    

    '    Creates an European Exercise object.

    Dim MyEuropeanExercise As String
    MyEuropeanExercise = _
        EuropeanExercisePart()


    

    '    Creates a generic calendar object.

    Dim MyNewCalendar As String
    MyNewCalendar = _
        GenericCalendarPart()


    

    '    Creates a fixed coupon bond object.
    Dim MyFixedCouponBond_y As String
    MyFixedCouponBond_y = _
        FixedCouponBond_yPart( _
        MyNewCalendar)


    

    '    Creates a BondOption object that will price the option via a 
    '    Black Scholes methodology.
    Dim MyQBSBondOption As String
    MyQBSBondOption = _
        QBSBondOptionPart( _
        MyFixedCouponBond_y, _
        MyEuropeanExercise)

    ' This is the result we are looking for.
    VB_EX_QBSBondOption = MyQBSBondOption

            
    
    Exit Function
err_Generic:
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description    
    
            
End Function                
        


' ///////////////////////////////////////////////////////////////////

Private Function QBSBondOptionPart( _
    MyFixedCouponBond_y As String, _                
    MyEuropeanExercise As String) As String


    



    '    Key Handle to be used for the new Bond object.
        Dim MyQBSBondOption As String
        MyQBSBondOption = "MyQBSBondOption" & "_" & CStr(nCTBondOptionsGlobal)


    '    When creating this object for the first time, set this parameter 
    '    to a positive value.
        Dim Reload As Long
        Reload = 1


    '    Type of option (C)all or (P)ut.
        Dim OptionType As String
        OptionType = "Call"


    '    The exercise price of the BondOption.
        Dim exercisePrice As Double
        exercisePrice = 101


    '    The volatility of the Bond.
        Dim Vol As Double
        Vol = 0.2


    '    The type of volatility passed in : Either 'Yield' or 'Price' 
    '    vol.
        Dim VolType As String
        VolType = "Yield"


    '    A repurchase rate (repo rate) value.
        Dim reporate As Double
        reporate = 0.055


    '    The compounding of the repurchase rate (repo rate) passed in.
        Dim compounding As String
        compounding = "Compounded"


    '    Frequency of the repo rate.
        Dim Freq As String
        Freq = "A"


    '    The DayCounter of the repo rate.
        Dim DayCount As String
        DayCount = "ACT360"

                    
    '  Excel function call is : "CT.BNDOPT.QBSBondOption()"

    '    Creates a BondOption object that will price the option via a 
    '    Black Scholes methodology.
        Dim rQBSBondOption As String 
        
        ' We call the CreateCTBondOptions() function via the CTQL module exposed from the CTQL_VBA_API.xla addin.
        Dim oCTBondOptions As CTBondOptions
        Set oCTBondOptions = CTQL.CreateCTBondOptions()
    
        rQBSBondOption = oCTBondOptions.QBSBondOption( _
                MyQBSBondOption, _
                Reload, _
                MyFixedCouponBond_y, _
                OptionType, _
                MyEuropeanExercise, _
                exercisePrice, _
                Vol, _
                VolType, _
                reporate, _
                compounding, _
                Freq, _
                DayCount)


    QBSBondOptionPart = rQBSBondOption
    
End Function                        








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