CreateZeroCouponLeg Example VB6

VB6 Example - CreateZeroCouponLeg![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here CreateZeroCouponLeg(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( CreateZeroCouponLegPart() ). ' 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 nCTFIXLegsGlobal As Long Public Function VB_EX_CreateZeroCouponLeg() As String![]() nCTFIXLegsGlobal = nCTFIXLegsGlobal + 1 On Error GoTo err_Generic ![]() ' EURO calendar used for holiday adjustments.![]() Dim MyEuroCal As String MyEuroCal = _ CALEUROPart()![]() ![]() ![]() ' 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()![]() ![]() ![]() ' 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 MyYCInterpOnDCF As String MyYCInterpOnDCF = _ MKTYC_DPart( _ MyValuationDate, _ MyDepoTPL, _ MySwapTPL)![]() ![]() ![]() ' 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 MyMarket As String MyMarket = _ CreateMKTPart( _ MyYCInterpOnDCF, _ MySABRVolCurve)![]() ![]() ![]() ' Creates a zerocoupon leg. Dim MyCreateZeroCouponLeg As String MyCreateZeroCouponLeg = _ CreateZeroCouponLegPart( _ MySchedule, _ MyMarket)![]() ' This is the result we are looking for. VB_EX_CreateZeroCouponLeg = MyCreateZeroCouponLeg![]() Exit Function err_Generic: MsgBox "Error: " & Err.Number & vbCrLf & Err.Description End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function CreateZeroCouponLegPart( _ MySchedule As String, _ MyMarket As String) As String![]() ![]() ' Create example range for parameter CreateZeroCouponLeg_Notional![]() ' Column vector of 20 rows (indexed from 0, highest index of 19) Dim CreateZeroCouponLeg_Notional(19, 0) As Variant CreateZeroCouponLeg_Notional(0, 0) = 5000000 CreateZeroCouponLeg_Notional(1, 0) = 5000000 CreateZeroCouponLeg_Notional(2, 0) = 5000000 CreateZeroCouponLeg_Notional(3, 0) = 5000000 CreateZeroCouponLeg_Notional(4, 0) = 5000000 CreateZeroCouponLeg_Notional(5, 0) = 5000000 CreateZeroCouponLeg_Notional(6, 0) = 5000000 CreateZeroCouponLeg_Notional(7, 0) = 5000000 CreateZeroCouponLeg_Notional(8, 0) = 5000000 CreateZeroCouponLeg_Notional(9, 0) = 5000000 CreateZeroCouponLeg_Notional(10, 0) = 5000000 CreateZeroCouponLeg_Notional(11, 0) = 5000000 CreateZeroCouponLeg_Notional(12, 0) = 5000000 CreateZeroCouponLeg_Notional(13, 0) = 5000000 CreateZeroCouponLeg_Notional(14, 0) = 5000000 CreateZeroCouponLeg_Notional(15, 0) = 5000000 CreateZeroCouponLeg_Notional(16, 0) = 5000000 CreateZeroCouponLeg_Notional(17, 0) = 5000000 CreateZeroCouponLeg_Notional(18, 0) = 5000000 CreateZeroCouponLeg_Notional(19, 0) = 5000000 ' Create example range for parameter CreateZeroCouponLeg_PrincipalPayments![]() ' Column vector of 20 rows (indexed from 0, highest index of 19) Dim CreateZeroCouponLeg_PrincipalPayments(19, 0) As Variant CreateZeroCouponLeg_PrincipalPayments(0, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(1, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(2, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(3, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(4, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(5, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(6, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(7, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(8, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(9, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(10, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(11, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(12, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(13, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(14, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(15, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(16, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(17, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(18, 0) = 0 CreateZeroCouponLeg_PrincipalPayments(19, 0) = 0 ' Create example range for parameter CreateZeroCouponLeg_Coupon![]() ' Column vector of 20 rows (indexed from 0, highest index of 19) Dim CreateZeroCouponLeg_Coupon(19, 0) As Variant CreateZeroCouponLeg_Coupon(0, 0) = 0.05 CreateZeroCouponLeg_Coupon(1, 0) = 0.05 CreateZeroCouponLeg_Coupon(2, 0) = 0.05 CreateZeroCouponLeg_Coupon(3, 0) = 0.05 CreateZeroCouponLeg_Coupon(4, 0) = 0.05 CreateZeroCouponLeg_Coupon(5, 0) = 0.05 CreateZeroCouponLeg_Coupon(6, 0) = 0.05 CreateZeroCouponLeg_Coupon(7, 0) = 0.05 CreateZeroCouponLeg_Coupon(8, 0) = 0.05 CreateZeroCouponLeg_Coupon(9, 0) = 0.05 CreateZeroCouponLeg_Coupon(10, 0) = 0.05 CreateZeroCouponLeg_Coupon(11, 0) = 0.05 CreateZeroCouponLeg_Coupon(12, 0) = 0.05 CreateZeroCouponLeg_Coupon(13, 0) = 0.05 CreateZeroCouponLeg_Coupon(14, 0) = 0.05 CreateZeroCouponLeg_Coupon(15, 0) = 0.05 CreateZeroCouponLeg_Coupon(16, 0) = 0.05 CreateZeroCouponLeg_Coupon(17, 0) = 0.05 CreateZeroCouponLeg_Coupon(18, 0) = 0.05 CreateZeroCouponLeg_Coupon(19, 0) = 0.05 ![]() ![]() ![]() ' Key value to use as a handle for the created object Dim MyCreateZeroCouponLeg As String MyCreateZeroCouponLeg = "MyCreateZeroCouponLeg" & "_" & CStr(nCTFIXLegsGlobal)![]() ![]() ' When creating this object for the first time, set this parameter ' to a positive value. Dim Reload As Long Reload = 1![]() ![]() ' Whether you would like to PAY or REC this leg. Dim PayRec As PAYRECEnum PayRec = PAYREC_REC![]() ![]() ' A positive factor value you wish to multiply the Floating-Reset ' Rate/Fixed-Coupon Rate by (Usually 1). Dim Gearing As Long Gearing = 1![]() ![]() ' Currency of the Notional amount. Dim Ccy As CCYEnum Ccy = CCY_EUR![]() ![]() ' Payment Business Day Convention. Dim BusDayConv As BDCEnum BusDayConv = BDC_modifiedfollowing![]() ![]() ' Payment DayCounter. Dim DayCount As DayCountEnum DayCount = DayCount_actualact_isda![]() ![]() ' Whether you wish to exchange the principal amount(s) at the ' start and termination of the leg contract. Dim ExchangePrincipal As Boolean ExchangePrincipal = false![]() ' Excel function call is : "CT.LEG.CreateZeroCouponLeg()"![]() ' Creates a zerocoupon leg. Dim rCreateZeroCouponLeg As String Dim oCTFIXLegs As New CTQL.CTFIXLegs rCreateZeroCouponLeg = oCTFIXLegs.CreateZeroCouponLeg( _ MyCreateZeroCouponLeg, _ Reload, _ PayRec, _ Gearing, _ CreateZeroCouponLeg_Notional, _ CreateZeroCouponLeg_PrincipalPayments, _ Ccy, _ MySchedule, _ BusDayConv, _ DayCount, _ CreateZeroCouponLeg_Coupon, _ ExchangePrincipal, _ MyMarket)![]() ![]() CreateZeroCouponLegPart = rCreateZeroCouponLeg End Function ![]() ![]() ![]() ![]() |