TreasuryFuturesConventionContainer.java

  1. package org.drip.market.exchange;

  2. /*
  3.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  4.  */

  5. /*!
  6.  * Copyright (C) 2020 Lakshmi Krishnamurthy
  7.  * Copyright (C) 2019 Lakshmi Krishnamurthy
  8.  * Copyright (C) 2018 Lakshmi Krishnamurthy
  9.  * Copyright (C) 2017 Lakshmi Krishnamurthy
  10.  * Copyright (C) 2016 Lakshmi Krishnamurthy
  11.  * Copyright (C) 2015 Lakshmi Krishnamurthy
  12.  *
  13.  *  This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
  14.  *      asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
  15.  *      analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
  16.  *      equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
  17.  *      numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
  18.  *      and computational support.
  19.  *  
  20.  *      https://lakshmidrip.github.io/DROP/
  21.  *  
  22.  *  DROP is composed of three modules:
  23.  *  
  24.  *  - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
  25.  *  - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
  26.  *  - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
  27.  *
  28.  *  DROP Product Core implements libraries for the following:
  29.  *  - Fixed Income Analytics
  30.  *  - Loan Analytics
  31.  *  - Transaction Cost Analytics
  32.  *
  33.  *  DROP Portfolio Core implements libraries for the following:
  34.  *  - Asset Allocation Analytics
  35.  *  - Asset Liability Management Analytics
  36.  *  - Capital Estimation Analytics
  37.  *  - Exposure Analytics
  38.  *  - Margin Analytics
  39.  *  - XVA Analytics
  40.  *
  41.  *  DROP Computational Core implements libraries for the following:
  42.  *  - Algorithm Support
  43.  *  - Computation Support
  44.  *  - Function Analysis
  45.  *  - Model Validation
  46.  *  - Numerical Analysis
  47.  *  - Numerical Optimizer
  48.  *  - Spline Builder
  49.  *  - Statistical Learning
  50.  *
  51.  *  Documentation for DROP is Spread Over:
  52.  *
  53.  *  - Main                     => https://lakshmidrip.github.io/DROP/
  54.  *  - Wiki                     => https://github.com/lakshmiDRIP/DROP/wiki
  55.  *  - GitHub                   => https://github.com/lakshmiDRIP/DROP
  56.  *  - Repo Layout Taxonomy     => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
  57.  *  - Javadoc                  => https://lakshmidrip.github.io/DROP/Javadoc/index.html
  58.  *  - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
  59.  *  - Release Versions         => https://lakshmidrip.github.io/DROP/version.html
  60.  *  - Community Credits        => https://lakshmidrip.github.io/DROP/credits.html
  61.  *  - Issues Catalog           => https://github.com/lakshmiDRIP/DROP/issues
  62.  *  - JUnit                    => https://lakshmidrip.github.io/DROP/junit/index.html
  63.  *  - Jacoco                   => https://lakshmidrip.github.io/DROP/jacoco/index.html
  64.  *
  65.  *  Licensed under the Apache License, Version 2.0 (the "License");
  66.  *      you may not use this file except in compliance with the License.
  67.  *  
  68.  *  You may obtain a copy of the License at
  69.  *      http://www.apache.org/licenses/LICENSE-2.0
  70.  *  
  71.  *  Unless required by applicable law or agreed to in writing, software
  72.  *      distributed under the License is distributed on an "AS IS" BASIS,
  73.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  74.  *  
  75.  *  See the License for the specific language governing permissions and
  76.  *      limitations under the License.
  77.  */

  78. /**
  79.  * <i>TreasuryFuturesConventionContainer</i> holds the Details of the Treasury Futures Contracts.
  80.  *
  81.  *  <br><br>
  82.  *  <ul>
  83.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ProductCore.md">Product Core Module</a></li>
  84.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/FixedIncomeAnalyticsLibrary.md">Fixed Income Analytics Library</a></li>
  85.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/market">Static Market Fields - the Definitions, the OTC/Exchange Traded Products, and Treasury Settings</a></li>
  86.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/market/exchange">Deliverable Swap, STIR, Treasury Futures</a></li>
  87.  *  </ul>
  88.  *
  89.  * @author Lakshmi Krishnamurthy
  90.  */

  91. public class TreasuryFuturesConventionContainer {
  92.     private static java.util.Map<java.lang.String, org.drip.market.exchange.TreasuryFuturesConvention>
  93.         _mapFutures = null;

  94.     /**
  95.      * Initialize the Bond Futures Convention Container with the Conventions
  96.      *
  97.      * @return TRUE - The Bond Futures Convention Container successfully initialized with the Conventions
  98.      */

  99.     public static final boolean Init()
  100.     {
  101.         if (null != _mapFutures) return true;

  102.         _mapFutures = new java.util.TreeMap<java.lang.String,
  103.             org.drip.market.exchange.TreasuryFuturesConvention>();

  104.         int[] aiStandardDeliveryMonth = {org.drip.analytics.date.DateUtil.FEBRUARY,
  105.             org.drip.analytics.date.DateUtil.MAY, org.drip.analytics.date.DateUtil.AUGUST,
  106.                 org.drip.analytics.date.DateUtil.NOVEMBER};

  107.         try {
  108.             _mapFutures.put ("AUD-BANK-BILLS-3M", new org.drip.market.exchange.TreasuryFuturesConvention
  109.                 ("AUD-BANKBILLS-3M", new java.lang.String[] {"AUD-BANKBILLS-3M"}, "AUD", "AUD", "3M",
  110.                     1000000., 0.03125, 100000., new java.lang.String[] {"ASX"}, "BANK", "BILLS", new
  111.                         org.drip.analytics.eventday.DateInMonth
  112.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_WEEK_DAY, false,
  113.                                 -1, org.drip.analytics.date.DateUtil.FRIDAY, 2, -1), new
  114.                                     org.drip.market.exchange.TreasuryFuturesEligibility ("85D", "95D", new
  115.                                         java.lang.String[]
  116.                                             {"Australia and New Zealand Banking Group Limited",
  117.                                                 "Commonwealth Bank of Australia",
  118.                                                     "National Australia Bank Limited",
  119.                                                         "Westpac Banking Corporation"}, 0.), new
  120.                                                             org.drip.market.exchange.TreasuryFuturesSettle (1, 1,
  121.                                                                 0, 0,
  122.                                                                     org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  123.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_FLAT, false,
  124.                     java.lang.Double.NaN, java.lang.Double.NaN, aiStandardDeliveryMonth)));

  125.             _mapFutures.put ("AUD-TREASURY-BOND-3Y", new org.drip.market.exchange.TreasuryFuturesConvention
  126.                 ("AUD-TREASURY-BOND-3Y", new java.lang.String[] {"YMA"}, "AUD", "AUD", "3Y", 100000., 0.03125,
  127.                     0., new java.lang.String[] {"SFE"}, "TREASURY", "BOND", new
  128.                         org.drip.analytics.eventday.DateInMonth
  129.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_WEEK_DAY, false,
  130.                                 -1, org.drip.analytics.date.DateUtil.FRIDAY, 2, -1), new
  131.                                     org.drip.market.exchange.TreasuryFuturesEligibility ("2Y", "4Y", new
  132.                                         java.lang.String[] {}, 0.), new
  133.                                             org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 0,
  134.                                                 org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_CASH,
  135.                                                     org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_AUD_BOND_FUTURES_STYLE,
  136.                 false, java.lang.Double.NaN, java.lang.Double.NaN, aiStandardDeliveryMonth)));

  137.             _mapFutures.put ("AUD-TREASURY-BOND-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  138.                 ("AUD-TREASURY-BOND-10Y", new java.lang.String[] {"XMA"}, "AUD", "AUD", "10Y", 100000.,
  139.                     0.03125, 0., new java.lang.String[] {"SFE"}, "TREASURY", "BOND", new
  140.                         org.drip.analytics.eventday.DateInMonth
  141.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_WEEK_DAY, false,
  142.                                 -1, org.drip.analytics.date.DateUtil.FRIDAY, 2, -1), new
  143.                                     org.drip.market.exchange.TreasuryFuturesEligibility ("8Y", "12Y", new
  144.                                         java.lang.String[] {}, 0.), new
  145.                                             org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 0,
  146.                                                 org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_CASH,
  147.                                                     org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_AUD_BOND_FUTURES_STYLE,
  148.                 false, java.lang.Double.NaN, java.lang.Double.NaN, aiStandardDeliveryMonth)));

  149.             _mapFutures.put ("USD-TREASURY-BOND-ULTRA", new org.drip.market.exchange.TreasuryFuturesConvention
  150.                 ("ULTRA T-BOND", new java.lang.String[] {"UB", "UL", "UBE"}, "USD", "USD", "ULTRA", 100000.,
  151.                     0.03125, 0., new java.lang.String[] {"CBOT"}, "TREASURY", "BOND", new
  152.                         org.drip.analytics.eventday.DateInMonth
  153.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  154.                                 7, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("25Y",
  155.                                     "MAX", new java.lang.String[] {"US Government Bonds"}, 0.), new
  156.                                         org.drip.market.exchange.TreasuryFuturesSettle (1, 1, -1, 0,
  157.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  158.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  159.                     0.06, 0.06, aiStandardDeliveryMonth)));

  160.             _mapFutures.put ("USD-TREASURY-BOND-30Y", new org.drip.market.exchange.TreasuryFuturesConvention
  161.                 ("USD 30-YR BOND", new java.lang.String[] {"ZB", "US"}, "USD", "USD", "30Y", 100000., 0.03125,
  162.                     0., new java.lang.String[] {"CBOT"}, "TREASURY", "BOND", new
  163.                         org.drip.analytics.eventday.DateInMonth
  164.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  165.                                 7, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("15Y",
  166.                                     "25Y", new java.lang.String[] {"US Government Bonds"}, 0.), new
  167.                                         org.drip.market.exchange.TreasuryFuturesSettle (1, 1, -1, 0,
  168.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  169.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  170.                     0.06, 0.06, aiStandardDeliveryMonth)));

  171.             _mapFutures.put ("USD-TREASURY-NOTE-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  172.                 ("USD 10-YR NOTE", new java.lang.String[] {"ZN", "TY"}, "USD", "USD", "10Y", 100000., 0.03125,
  173.                     0., new java.lang.String[] {"CBOT"}, "TREASURY", "NOTE", new
  174.                         org.drip.analytics.eventday.DateInMonth
  175.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  176.                                 7, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("78M",
  177.                                     "10Y", new java.lang.String[] {"US Government Bonds"}, 0.), new
  178.                                         org.drip.market.exchange.TreasuryFuturesSettle (1, 1, -1, 0,
  179.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  180.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  181.                     0.06, 0.06, aiStandardDeliveryMonth)));

  182.             _mapFutures.put ("USD-TREASURY-NOTE-5Y", new org.drip.market.exchange.TreasuryFuturesConvention
  183.                 ("USD 5-YR NOTE", new java.lang.String[] {"ZF", "FV"}, "USD", "USD", "5Y", 100000., 0.03125,
  184.                     0., new java.lang.String[] {"CBOT"}, "TREASURY", "NOTE", new
  185.                         org.drip.analytics.eventday.DateInMonth
  186.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  187.                                 0, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("50M",
  188.                                     "63M", new java.lang.String[] {"US Government Bonds"}, 0.), new
  189.                                         org.drip.market.exchange.TreasuryFuturesSettle (3, 3, 0, 0,
  190.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  191.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  192.                     0.06, 0.06, aiStandardDeliveryMonth)));

  193.             _mapFutures.put ("USD-TREASURY-NOTE-3Y", new org.drip.market.exchange.TreasuryFuturesConvention
  194.                 ("USD 3-YR NOTE", new java.lang.String[] {"Z3N", "3YR"}, "USD", "USD", "3Y", 200000., 0.03125,
  195.                     0., new java.lang.String[] {"CBOT"}, "TREASURY", "NOTE", new
  196.                         org.drip.analytics.eventday.DateInMonth
  197.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  198.                                 0, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("33M",
  199.                                     "3Y", new java.lang.String[] {"US Government Bonds"}, 0.), new
  200.                                         org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 0,
  201.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  202.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  203.                     0.06, 0.06, aiStandardDeliveryMonth)));

  204.             _mapFutures.put ("USD-TREASURY-NOTE-2Y", new org.drip.market.exchange.TreasuryFuturesConvention
  205.                 ("USD 2-YR NOTE", new java.lang.String[] {"ZT", "TU"}, "USD", "USD", "2Y", 200000., 0.03125,
  206.                     0., new java.lang.String[] {"CBOT"}, "TREASURY", "NOTE", new
  207.                         org.drip.analytics.eventday.DateInMonth
  208.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  209.                                 0, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("21M",
  210.                                     "2Y", new java.lang.String[] {"US Government Bonds"}, 0.), new
  211.                                         org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 0,
  212.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  213.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  214.                     0.06, 0.06, aiStandardDeliveryMonth)));

  215.             _mapFutures.put ("EUR-EURO-BUXL-30Y", new org.drip.market.exchange.TreasuryFuturesConvention
  216.                 ("EUR EURO-BUXL", new java.lang.String[] {"BUXL"}, "EUR", "EUR", "30Y", 100000., 0.03125, 0.,
  217.                     new java.lang.String[] {"EUREX"}, "EURO", "BUXL", new
  218.                         org.drip.analytics.eventday.DateInMonth
  219.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  220.                                 10, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("24Y",
  221.                                     "35Y", new java.lang.String[] {"EUR-Germany BUXL Bonds"}, 5000000000.),
  222.                                         new org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 2,
  223.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  224.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  225.                     0.04, 0.04, aiStandardDeliveryMonth)));

  226.             _mapFutures.put ("EUR-EURO-BUND-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  227.                 ("EUR EURO-BUND", new java.lang.String[] {"BUND"}, "EUR", "EUR", "10Y", 100000., 0.03125, 0.,
  228.                     new java.lang.String[] {"EUREX", "NLX"}, "EURO", "BUND", new
  229.                         org.drip.analytics.eventday.DateInMonth
  230.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  231.                                 10, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("102M",
  232.                                     "126M", new java.lang.String[] {"EUR-Germany BUND Bonds"}, 5000000000.),
  233.                                         new org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 2,
  234.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  235.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  236.                     0.06, 0.06, aiStandardDeliveryMonth)));

  237.             _mapFutures.put ("EUR-EURO-BOBL-5Y", new org.drip.market.exchange.TreasuryFuturesConvention
  238.                 ("EUR EURO-BUND", new java.lang.String[] {"BOBL"}, "EUR", "EUR", "5Y", 100000., 0.03125, 0.,
  239.                     new java.lang.String[] {"EUREX", "NLX"}, "EURO", "BOBL", new
  240.                         org.drip.analytics.eventday.DateInMonth
  241.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  242.                                 10, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("54M",
  243.                                     "66M", new java.lang.String[] {"EUR-Germany BOBL Bonds"}, 5000000000.),
  244.                                         new org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 2,
  245.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  246.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  247.                     0.06, 0.06, aiStandardDeliveryMonth)));

  248.             _mapFutures.put ("EUR-EURO-SCHATZ-2Y", new org.drip.market.exchange.TreasuryFuturesConvention
  249.                 ("EUR EURO-BUND", new java.lang.String[] {"SCHATZ"}, "EUR", "EUR", "2Y", 100000., 0.03125, 0.,
  250.                     new java.lang.String[] {"EUREX", "NLX"}, "EURO", "SCHATZ", new
  251.                         org.drip.analytics.eventday.DateInMonth
  252.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  253.                                 10, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("21M",
  254.                                     "27M", new java.lang.String[] {"EUR-Germany SCHATZ Bonds"}, 5000000000.),
  255.                                         new org.drip.market.exchange.TreasuryFuturesSettle (1, 1, 0, 2,
  256.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  257.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  258.                     0.06, 0.06, aiStandardDeliveryMonth)));

  259.             _mapFutures.put ("EUR-TREASURY-BONO-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  260.                 ("EUR 10Y BONO", new java.lang.String[] {"10Y-BONO"}, "EUR", "EUR", "10Y", 100000., 0.03125,
  261.                     0., new java.lang.String[] {"MEFF", "SENAF"}, "TREASURY", "BONO", new
  262.                         org.drip.analytics.eventday.DateInMonth
  263.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_SPECIFIC_DAY_OF_MONTH,
  264.                 false, 7, -1, -1, 10), new org.drip.market.exchange.TreasuryFuturesEligibility ("102M", "MAX",
  265.                     new java.lang.String[] {"EUR BONO"}, 0.), new org.drip.market.exchange.TreasuryFuturesSettle
  266.                         (1, 1, -2, -2,
  267.                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  268.                                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR,
  269.                 false, 0.06, 0.06, aiStandardDeliveryMonth)));

  270.             _mapFutures.put ("GBP-SHORT-GILT-2Y", new org.drip.market.exchange.TreasuryFuturesConvention
  271.                 ("GBP SHORT-GILT", new java.lang.String[] {"SHORT-GILT"}, "GBP", "GBP", "2Y", 100000.,
  272.                     0.03125, 0., new java.lang.String[] {"LIFFE"}, "SHORT", "GILT", new
  273.                         org.drip.analytics.eventday.DateInMonth
  274.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  275.                                 2, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("18M",
  276.                                     "39M", new java.lang.String[] {"GBP Short GILT Bonds"}, 0.), new
  277.                                         org.drip.market.exchange.TreasuryFuturesSettle (0, 22, -2, 0,
  278.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  279.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  280.                     0.04, 0.06, aiStandardDeliveryMonth)));

  281.             _mapFutures.put ("GBP-MEDIUM-GILT-5Y", new org.drip.market.exchange.TreasuryFuturesConvention
  282.                 ("GBP MEDIUM-GILT", new java.lang.String[] {"MEDIUM-GILT"}, "GBP", "GBP", "5Y", 100000.,
  283.                     0.03125, 0., new java.lang.String[] {"LIFFE"}, "MEDIUM", "GILT", new
  284.                         org.drip.analytics.eventday.DateInMonth
  285.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  286.                                 2, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("4Y",
  287.                                     "75M", new java.lang.String[] {"GBP Medium GILT Bonds"}, 0.), new
  288.                                         org.drip.market.exchange.TreasuryFuturesSettle (0, 22, -2, 0,
  289.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  290.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  291.                     0.04, 0.06, aiStandardDeliveryMonth)));

  292.             _mapFutures.put ("GBP-LONG-GILT-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  293.                 ("GBP LONG-GILT", new java.lang.String[] {"LONG-GILT"}, "GBP", "GBP", "10Y", 100000., 0.03125,
  294.                     0., new java.lang.String[] {"LIFFE", "NLX"}, "MEDIUM", "GILT", new
  295.                         org.drip.analytics.eventday.DateInMonth
  296.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_EDGE_LAG, true,
  297.                                 2, -1, -1, -1), new org.drip.market.exchange.TreasuryFuturesEligibility ("105M",
  298.                                     "13Y", new java.lang.String[] {"GBP Long GILT Bonds"}, 0.), new
  299.                                         org.drip.market.exchange.TreasuryFuturesSettle (0, 22, -2, 0,
  300.                                             org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  301.                 org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR, false,
  302.                     0.03, 0.06, aiStandardDeliveryMonth)));

  303.             _mapFutures.put ("JPY-TREASURY-JGB-5Y", new org.drip.market.exchange.TreasuryFuturesConvention
  304.                 ("JPY 5Y JGB", new java.lang.String[] {"5Y-JGB"}, "JPY", "JPY", "5Y", 1000000000., 0.03125,
  305.                     0., new java.lang.String[] {"TSE"}, "TREASURY", "JGB", new
  306.                         org.drip.analytics.eventday.DateInMonth
  307.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_SPECIFIC_DAY_OF_MONTH,
  308.                 true, 7, -1, -1, 20), new org.drip.market.exchange.TreasuryFuturesEligibility ("4Y", "63M", new
  309.                     java.lang.String[] {"JPY JGB"}, 0.), new org.drip.market.exchange.TreasuryFuturesSettle (1,
  310.                         1, 0, -7, org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  311.                             org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR,
  312.                 false, 0.03, 0.03, aiStandardDeliveryMonth)));

  313.             _mapFutures.put ("JPY-TREASURY-JGB-10Y", new org.drip.market.exchange.TreasuryFuturesConvention
  314.                 ("JPY 10Y JGB", new java.lang.String[] {"10Y-JGB"}, "JPY", "JPY", "10Y", 1000000000., 0.03125,
  315.                     0., new java.lang.String[] {"TSE"}, "TREASURY", "JGB", new
  316.                         org.drip.analytics.eventday.DateInMonth
  317.                             (org.drip.analytics.eventday.DateInMonth.INSTANCE_GENERATOR_RULE_SPECIFIC_DAY_OF_MONTH,
  318.                 true, 7, -1, -1, 20), new org.drip.market.exchange.TreasuryFuturesEligibility ("7Y", "10Y", new
  319.                     java.lang.String[] {"JPY JGB"}, 0.), new org.drip.market.exchange.TreasuryFuturesSettle (1,
  320.                         1, 0, -7, org.drip.market.exchange.TreasuryFuturesSettle.SETTLE_TYPE_PHYSICAL_DELIVERY,
  321.                             org.drip.market.exchange.TreasuryFuturesSettle.QUOTE_REFERENCE_INDEX_CONVERSION_FACTOR,
  322.                 false, 0.06, 0.06, aiStandardDeliveryMonth)));
  323.         } catch (java.lang.Exception e) {
  324.             e.printStackTrace();

  325.             return false;
  326.         }

  327.         return true;
  328.     }

  329.     /**
  330.      * Retrieve the Treasury Futures Convention from the Currency, the Type, the Sub-type, and the Maturity
  331.      *  Tenor
  332.      *
  333.      * @param strCurrency The Currency
  334.      * @param strUnderlierType The Underlier Type
  335.      * @param strUnderlierSubtype The Underlier Sub-type
  336.      * @param strMaturityTenor The Maturity Tenor
  337.      *
  338.      * @return The Treasury Futures Instance
  339.      */

  340.     public static final org.drip.market.exchange.TreasuryFuturesConvention FromJurisdictionTypeMaturity (
  341.         final java.lang.String strCurrency,
  342.         final java.lang.String strUnderlierType,
  343.         final java.lang.String strUnderlierSubtype,
  344.         final java.lang.String strMaturityTenor)
  345.     {
  346.         if (null == strCurrency || strCurrency.isEmpty() || null == strUnderlierType ||
  347.             strUnderlierType.isEmpty() || null == strUnderlierSubtype || strUnderlierSubtype.isEmpty() ||
  348.                 null == strMaturityTenor || strMaturityTenor.isEmpty())
  349.             return null;

  350.         java.lang.String strKey = strCurrency + "-" + strUnderlierType + "-" + strUnderlierSubtype + "-" +
  351.             strMaturityTenor;

  352.         return _mapFutures.containsKey (strKey) ? _mapFutures.get (strKey) : null;
  353.     }
  354. }