AmortFloatingRateBond Example VBNET

VB.NET Example - AmortFloatingRateBond![]() ![]() ![]() ![]() ![]() ' ################################################################################## ' The first function here AmortFloatingRateBond(), contains a series of ' function calls leading upto the main function call, the second function ' within this file ( AmortFloatingRateBondPart() ). ' 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 nCTBondsGlobal 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_AmortFloatingRateBond() As String![]() nCTBondsGlobal = nCTBondsGlobal + 1 ![]() Dim szErrorMsg As String Try![]() ![]() ' Calendar for reproducing theoretical calculations.![]() Dim MyNullCalendar As String MyNullCalendar = _ EmptyCalendarPart()![]() ![]() ![]() ' 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 centralized valuation date object.![]() Dim MyValuationDate As String MyValuationDate = _ ValueDateObjPart()![]() ![]() ![]() ' 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 new Index code. Dim MyNewIndex As String MyNewIndex = _ CreateIndexPart( _ MyCALUKExchange, _ MyEuroCal, _ MyYCInterpOnDCF)![]() ![]() ![]() ' Creates an amortised floating rate bond object. Dim MyAmortFLTBond As String MyAmortFLTBond = _ AmortFloatingRateBondPart( _ MyNewIndex, _ MyNullCalendar, _ MyYCInterpOnDCF)![]() ' This is the result we are looking for. VB_EX_AmortFloatingRateBond = MyAmortFLTBond![]() Catch e As Exception szErrorMsg = e.Message Throw e Catch e As System.ApplicationException szData = e.Message End Try End Function ![]() ![]() ' ///////////////////////////////////////////////////////////////////![]() Private Function AmortFloatingRateBondPart( _ MyNewIndex As String, _ MyNullCalendar As String, _ MyYCInterpOnDCF As String) As String![]() ![]() ' Create example range for parameter AmortFloatingRateBond_BondDetails![]() ![]() Dim AmortFloatingRateBond_BondDetails _ As CTQL.CTRangeData![]() Dim AmortFloatingRateBond_BondDetails_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. AmortFloatingRateBond_BondDetails_builder.Append("{") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 0 | 0 ;") AmortFloatingRateBond_BondDetails_builder.Append("100 | 100 | 0") AmortFloatingRateBond_BondDetails_builder.Append("}") AmortFloatingRateBond_BondDetails.RangeFromStr _ ( _ AmortFloatingRateBond_BondDetails_builder.ToString() _ ) ![]() ![]() ![]() ' Key Handle to be used for the new Bond object. Dim MyAmortFLTBond As String MyAmortFLTBond = "MyAmortFLTBond" + "_" + CStr(nCTBondsGlobal)![]() ![]() ' When creating this object for the first time, set this parameter ' to a positive value. Dim Reload As Integer Reload = 1![]() ![]() ' The currency code that you want to associate with the Bond. Dim Ccy As CTIEnums.CCYEnum Ccy = CTIEnums.CCYEnum.CCY_EUR![]() ![]() ' Number of days for the settlement of bonds. Dim SettleDays As Integer SettleDays = 2![]() ![]() ' Dated date of the bond. Dim datedDate As CTQL.Date datedDate = New CTQL.Date("21/4/2005", "dd/mm/yyyy")![]() ![]() ' First Coupon Date: Date that the first coupon is paid (if bond ' does not have an odd first period, leave blank or enter 0). Dim firstCouponDate As Integer firstCouponDate = 0![]() ![]() ' Penultimate Coupon Date: Date that the penultimate coupon is ' paid (if bond does not have an odd last period, leave blank ' or enter 0). Dim penultCouponDate As Integer penultCouponDate = 0![]() ![]() ' Maturity date of the bond. Dim matDate As CTQL.Date matDate = New CTQL.Date("21/4/2015", "dd/mm/yyyy")![]() ![]() ' Coupon DayCounter to use for the bond coupon payments. Dim cpnDayCount As CTIEnums.DayCountEnum cpnDayCount = CTIEnums.DayCountEnum.DayCount_30360![]() ![]() ' Business Day Convention to use. Dim BusDayConv As CTIEnums.BDCEnum BusDayConv = CTIEnums.BDCEnum.BDC_modifiedfollowing![]() ' Excel function call is : "CT.BOND.AmortFloatingRateBond()"![]() ' Creates an amortised floating rate bond object. Dim rAmortFloatingRateBond As String Dim oCTBonds As New CTQL.CTBonds rAmortFloatingRateBond = CTQL.CTBondsSA.AmortFloatingRateBond( _ MyAmortFLTBond, _ Reload, _ Ccy, _ SettleDays, _ datedDate.serialNumber(), _ firstCouponDate, _ penultCouponDate, _ matDate.serialNumber(), _ MyNewIndex, _ AmortFloatingRateBond_BondDetails, _ cpnDayCount, _ MyNullCalendar, _ BusDayConv, _ MyYCInterpOnDCF)![]() ![]() AmortFloatingRateBondPart = rAmortFloatingRateBond End Function ![]() ![]() ![]() ![]() |