CreateGammaReport Example VB6

High level view of the code structure (resulting in the final function call to CreateGammaReport() )
VB6 Example - CreateGammaReport![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here CreateGammaReport(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( CreateGammaReportPart() ). ' 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 nCTIRRiskGlobal As Long Public Function VB_EX_CreateGammaReport() As String![]() nCTIRRiskGlobal = nCTIRRiskGlobal + 1 On Error GoTo err_Generic ![]() ' Loads a FX table from a range object into a Exchange Rate Manager ' object.![]() Dim MyFXManager As String MyFXManager = _ CreateFXManagerPart()![]() ![]() ![]() ' EURO calendar used for holiday adjustments.![]() Dim MyEuroCal As String MyEuroCal = _ CALEUROPart()![]() ![]() ![]() ' UK date calendar used within the UK stock exchange.![]() Dim MyCALUKExchange As String MyCALUKExchange = _ CALUKExchangePart()![]() ![]() ![]() ' Creates a centralized valuation date object.![]() Dim MyValuationDate As String MyValuationDate = _ ValueDateObjPart()![]() ![]() ![]() ' Generates a schedule of start and end dates, given the initial ' start date and unadjusted final end dates. Dim MySchedule As String MySchedule = _ MakeSchedulePart( _ MyEuroCal)![]() ![]() ![]() ' 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 an amortisation object to be used within the amortisation ' fixed and floating rate leg objects. Dim MyCreateAmortObj As String MyCreateAmortObj = _ CreateAmortObjPart( _ MySchedule)![]() ![]() ![]() ' Creates a new Index code. Dim MyNewIndex2 As String MyNewIndex2 = _ CreateIndex__2Part( _ MyCALUKExchange, _ MyEuroCal, _ MyMiniYC)![]() ![]() ![]() ' Creates a SABR curve to model the dynamics of the volatility ' curve (smile). Dim MySABRVolCurve As String MySABRVolCurve = _ SABRVolCurvePart( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ![]() ![]() ' Creates a market object which is an aggregate of interest rate ' market objects (Discounting curve and Interest rate volatility ' curve (volcurve)). Dim MyMarket4 As String MyMarket4 = _ CreateMKT__4Part( _ MyMiniYC, _ MySABRVolCurve)![]() ![]() ![]() ' Creates a floating rate leg. Dim MyCreateFloatLeg3 As String MyCreateFloatLeg3 = _ CreateFloatLeg__3Part( _ MySchedule, _ MyNewIndex2, _ MyMarket4)![]() ![]() ![]() ' Creates an amortised floating rate leg. Dim MyCreateAmortFloatLeg2 As String MyCreateAmortFloatLeg2 = _ CreateAmortFloatLeg__2Part( _ MyCreateAmortObj, _ MyNewIndex2, _ MyMarket4)![]() ![]() ![]() ' Creates a Fixed rate leg. Dim MyCreateFixedRateLeg3 As String MyCreateFixedRateLeg3 = _ CreateFixedRateLeg__3Part( _ MySchedule, _ MyMarket4)![]() ![]() ![]() ' This floating leg (or FRN) only provide one payoff. Dim MyCreateZCFloatLeg2 As String MyCreateZCFloatLeg2 = _ CreateZCFloatLeg__2Part( _ MySchedule, _ MyNewIndex2, _ MyMarket4)![]() ![]() ![]() ' Creates an amortised fixed rate leg. Dim MyCreateAmortFixLeg2 As String MyCreateAmortFixLeg2 = _ CreateAmortFixLeg__2Part( _ MyCreateAmortObj, _ MyMarket4)![]() ![]() ![]() ' Creates a porfolio of caplet or floorlet options from this floating ' Rate Leg. Dim MyCreateCapFLTLeg2 As String MyCreateCapFLTLeg2 = _ CreateCapFLTLeg__2Part( _ MyCreateFloatLeg3, _ MySABRVolCurve)![]() ![]() ![]() ' Creates a Structure object (which is really a portfolio of leg ' objects). Dim MyStructure As String MyStructure = _ CreateStructurePart( _ MyCreateAmortFloatLeg2, _ MyCreateFixedRateLeg3, _ MyCreateZCFloatLeg2, _ MyCreateAmortFixLeg2, _ MyCreateCapFLTLeg2)![]() ![]() ![]() ' Creates a Gamma report object given a Structure object, a market ' shift and a gamma shift. Dim MyGammaReport As String MyGammaReport = _ CreateGammaReportPart( _ MyStructure, _ MyMiniYC, _ MyFXManager)![]() ' This is the result we are looking for. VB_EX_CreateGammaReport = MyGammaReport![]() Exit Function err_Generic: MsgBox "Error: " & Err.Number & vbCrLf & Err.Description End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function CreateGammaReportPart( _ MyStructure As String, _ MyMiniYC As String, _ MyFXManager As String) As String![]() ![]() ![]() ![]() ![]() ' Key value to use as a handle for the created object Dim MyGammaReport As String MyGammaReport = "MyGammaReport" & "_" & CStr(nCTIRRiskGlobal)![]() ![]() ' When creating this object for the first time, set this parameter ' to a positive value. Dim Reload As Long Reload = 1![]() ![]() ' The parellel shift that you wish to apply to the reset/fixing ' curve (in basis points). Dim GammaShift As Long GammaShift = 10![]() ![]() ' The yieldcurve market shift that you wish to apply to all points ' on the reset/fixing curve (in basis points). Dim YCShift As Long YCShift = 1![]() ![]() ' Currency code that you wish the risk report values to be stored ' in. Dim ReportPVCcy As CCYEnum ReportPVCcy = CCY_EUR![]() ' Excel function call is : "CT.RSK.CreateGammaReport()"![]() ' Creates a Gamma report object given a Structure object, a market ' shift and a gamma shift. Dim rCreateGammaReport As String Dim oCTIRRisk As New CTQL.CTIRRisk rCreateGammaReport = oCTIRRisk.CreateGammaReport( _ MyGammaReport, _ Reload, _ MyStructure, _ MyMiniYC, _ GammaShift, _ YCShift, _ MyFXManager, _ ReportPVCcy)![]() ![]() CreateGammaReportPart = rCreateGammaReport End Function ![]() ![]() ![]() ![]() |