FloatLegPortfolio Example Java





http://www.QuantTools.com
CapeTools Leg Portfolio function list
FloatLegPortfolio function

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

Key TAGs | Excel Index | API Index



Example Java 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 FloatLegPortfolio() )

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 :




Java Example - FloatLegPortfolio





    //     ##################################################################################
    //     The first function here FloatLegPortfolio(), contains a series of
    //     function calls leading upto the main function call, the second function
    //     within this file ( FloatLegPortfolioPart() ).
    //     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. 
    //     ##################################################################################
        

public class Java_EX_FloatLegPortfolio()
{
    static 
    {
        try 
        {
            System.loadLibrary("CTQuantToolsAPI20");
        } 
        catch (UnsatisfiedLinkError e) 
        {
            System.err.println("Native code library failed to load. Make sure that the CTQuantToolsAPI20.dll is installed correctly.\n" + e);
            System.exit(1);
        }
    }

    static int nCTLegPortfolioGlobal = 0;
    
    // 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
    static CTQL.CTRangeData oEmptyRange = new CTQL.CTRangeData();
    static String szTickedKeyName;
                

    public static String Java_EX_FloatLegPortfolio(String argv[])
    {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
    nCTLegPortfolioGlobal += 1;
            
    String szErrorMsg = "";

    try
    {



    //    UK date calendar used within the UK stock exchange.
    

    String MyCALUKExchange;
    MyCALUKExchange = 
        CALUKExchangePart();
    
    


    //    EURO calendar used for holiday adjustments.
    

    String MyEuroCal;
    MyEuroCal = 
        CALEUROPart();
    
    


    //    Creates a centralized valuation date object.
    

    String MyValuationDate;
    MyValuationDate = 
        ValueDateObjPart();
    
    


    //    UK date calendar.
    

    String MyCALUKSettlement;
    MyCALUKSettlement = 
        CALUKSettlementPart();
    
    


    //    TARGET calendar used for holiday adjustments.
    

    String MyTargetCal2;
    MyTargetCal2 = 
        CALTARGET__2Part();
    
    


    //    Creates a Deposit template which is almost identical to a Libor 
    //    Index, but without the YieldCurve information.
    
    String MyGBPDepoTPL;
    MyGBPDepoTPL = 
        CreateDepoTemplate__3Part(
        MyCALUKExchange,
        MyCALUKSettlement);
    
    


    //    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.
    
    String MyGBPSwapTPL;
    MyGBPSwapTPL = 
        CreateSwapTemplate__4Part(
        MyCALUKSettlement,
        MyGBPDepoTPL);
    
    


    //    Creates a Deposit template which is almost identical to a Libor 
    //    Index, but without the YieldCurve information.
    
    String MyDepoTPL;
    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.
    
    String MySwapTPL;
    MySwapTPL = 
        CreateSwapTemplatePart(
        MyEuroCal,
        MyDepoTPL);
    
    


    //    Creates a yield curve using market rates and cross currency 
    //    swaps (against the dollar).
    
    String MyYC_XCCY_DCF;
    MyYC_XCCY_DCF = 
        MKTYC_XCCY_DPart(
        MyValuationDate,
        MyDepoTPL,
        MySwapTPL);
    
    


    //    Creates a SABR curve to model the dynamics of the volatility 
    //    curve (smile).
    
    String MySABRVolCurve;
    MySABRVolCurve = 
        SABRVolCurvePart(
        MyValuationDate,
        MyDepoTPL,
        MySwapTPL);
    
    


    //    Creates a new Index code.
    
    String My1MIndex;
    My1MIndex = 
        CreateIndex__5Part(
        MyCALUKExchange,
        MyEuroCal,
        MyYC_XCCY_DCF);
    
    


    //    Creates a new Index code.
    
    String My2MIndex;
    My2MIndex = 
        CreateIndex__6Part(
        MyCALUKExchange,
        MyEuroCal,
        MyYC_XCCY_DCF);
    
    


    //    Creates a new Index code.
    
    String My3MIndex;
    My3MIndex = 
        CreateIndex__7Part(
        MyCALUKExchange,
        MyEuroCal,
        MyYC_XCCY_DCF);
    
    


    //    Creates a new Index code.
    
    String My6MIndex;
    My6MIndex = 
        CreateIndex__8Part(
        MyCALUKExchange,
        MyEuroCal,
        MyYC_XCCY_DCF);
    
    


    //    Creates a new Index code.
    
    String My12MIndex;
    My12MIndex = 
        CreateIndex__9Part(
        MyCALUKExchange,
        MyEuroCal,
        MyYC_XCCY_DCF);
    
    


    //    Creates a new Index based on SWAP details.
    
    String MyCMS5Y;
    MyCMS5Y = 
        CreateSwapIndex__2Part(
        MyTargetCal2,
        My3MIndex);
    
    


    //    Creates a new Index based on SWAP details.
    
    String MyCMS10Y;
    MyCMS10Y = 
        CreateSwapIndex__3Part(
        MyTargetCal2,
        My3MIndex);
    
    


    //    Creates a yield curve using market rates (No cross-currency 
    //    Swaps).
    
    String MyGBPYC;
    MyGBPYC = 
        MKTYC_D__4Part(
        MyValuationDate,
        MyGBPDepoTPL,
        MyGBPSwapTPL);
    
    


    //    GBPLibor, Pound Sterling LIBOR fixed by BBA.
    
    String MyGBPIndex;
    MyGBPIndex = 
        IDXGBPLiborPart(
        MyGBPYC);
    
    


    //    Creates a container to hold a group of Index objects.
    
    String MyGroupedIndex;
    MyGroupedIndex = 
        GroupedIndexPart(
        My1MIndex,
        My2MIndex,
        My3MIndex,
        My6MIndex,
        My12MIndex,
        MyGBPIndex,
        MyCMS5Y,
        MyCMS10Y);
    
    


    //    Creates a floating rate leg portfolio object (No quanto legs 
    //    at this time).
    
    String MyFloatLegPortfolio;
    MyFloatLegPortfolio = 
        FloatLegPortfolioPart(
        MyGroupedIndex,
        MyYC_XCCY_DCF,
        MySABRVolCurve);
    
    // This is the result we are looking for.
    return MyFloatLegPortfolio;
    
    
    }
    catch(Exception e)
    {
        szErrorMsg = e.getMessage();
        System.exit(1);
    }
                    
}                
        


// ///////////////////////////////////////////////////////////////////

private static String FloatLegPortfolioPart(
    String MyGroupedIndex,
    String MyYC_XCCY_DCF,
    String MySABRVolCurve)
{

        //  Create example range for parameter FloatLegPortfolio_FLTRange
        CTQL.CTRangeData FloatLegPortfolio_FLTRange = 
            new CTQL.CTRangeData();
    
        StringBuffer FloatLegPortfolio_FLTRange_builder = new StringBuffer(100);
                         
        // We could set the value for each cell individually, but for display
        // purposes, this is quicker and more informative.
        FloatLegPortfolio_FLTRange_builder.append("{");
        FloatLegPortfolio_FLTRange_builder.append("FLTName     | PayRec     | StartDate     | EndDate     | Notional     | IndexCode     | InArrears     | Margin     | CMSRho ;");
        FloatLegPortfolio_FLTRange_builder.append("FLT-123456     | reciever     | #24/Jan/2005#     | #24/Jan/2010#     | 50000000     | EURLIBOR3M     | False     | 0.0002     | 0 ;");
        FloatLegPortfolio_FLTRange_builder.append("FLT : 25-Jul-2005 - EURLIBOR6M     | reciever     | #25/Jul/2005#     | #25/Jul/2010#     | 50000000     | EURLIBOR6M     | False     | 0.0002     | 0 ;");
        FloatLegPortfolio_FLTRange_builder.append("FLT : 25-Jan-2006 - EURLIBOR6M     | payer     | #25/Jan/2006#     | #25/Jan/2011#     | 10000000     | EURLIBOR6M     | True     | 0.0002     | 0 ;");
        FloatLegPortfolio_FLTRange_builder.append("FLT : 25-Jul-2006 - EURCMS5Y     | payer     | #25/Jul/2006#     | #25/Jul/2011#     | 10000000     | EURCMS5Y     | True     | 0.0002     | 0.8 ;");
        FloatLegPortfolio_FLTRange_builder.append("FLT : 25-Jan-2007 - EURCMS5Y     | payer     | #25/Jan/2007#     | #25/Jan/2012#     | 10000000     | EURCMS5Y     | True     | 0.0002     | 0.8");
        FloatLegPortfolio_FLTRange_builder.append("}");
    
        FloatLegPortfolio_FLTRange.RangeFromStr
        (
            FloatLegPortfolio_FLTRange_builder.toString()
        );
                                       



    //    Key Handle to be used for the new Portfolio object.
        String MyFloatLegPortfolio = "MyFloatLegPortfolio" + "_" + Integer.toString(nCTLegPortfolioGlobal);


    //    When creating this object for the first time, set this parameter 
    //    to a positive value.
        int Reload = 1;

    
    //  Excel function call would be this - "CT.BOOK.FloatLegPortfolio()"

    //    Creates a floating rate leg portfolio object (No quanto legs 
    //    at this time).
        String rFloatLegPortfolio;
                                    
        rFloatLegPortfolio = CTQL.CTLegPortfolioSA.FloatLegPortfolio(
                MyFloatLegPortfolio,
                Reload,
                MyGroupedIndex,
                MyYC_XCCY_DCF,
                MySABRVolCurve,
                FloatLegPortfolio_FLTRange);


    return rFloatLegPortfolio;

}        








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