Esempio n. 1
0
 public void visit(YieldCurveSegment s)
 {
     // Do nothing
 }
Esempio n. 2
0
        public override void FromXML(XmlNode node)
        {
            CheckNode(node, "YieldCurve");

            // Read in the mandatory nodes.
            _curveID          = GetChildValue(node, "CurveId", true);
            _curveDescription = GetChildValue(node, "CurveDescription", true);
            _currency         = GetChildValue(node, "Currency", true);
            _discountCurveID  = GetChildValue(node, "DiscountCurve", true);

            // Read in the segments.
            XmlNode segmentsNode = GetChildNode(node, "Segments");

            if (segmentsNode != null)
            {
                XmlNode child = GetChildNode(segmentsNode, "");
                while (child != null)
                {
                    YieldCurveSegment segment   = new YieldCurveSegment();
                    string            childName = GetNodeName(child);

                    if (childName == "Direct")
                    {
                        segment = new DirectYieldCurveSegment();
                    }
                    else if (childName == "Simple")
                    {
                        segment = new SimpleYieldCurveSegment();
                    }
                    else if (childName == "AverageOIS")
                    {
                        segment = new AverageOISYieldCurveSegment();
                    }
                    else if (childName == "TenorBasis")
                    {
                        segment = new TenorBasisYieldCurveSegment();
                    }
                    else if (childName == "CrossCurrency")
                    {
                        segment = new CrossCcyYieldCurveSegment();
                    }
                    else if (childName == "ZeroSpread")
                    {
                        segment = new ZeroSpreadedYieldCurveSegment();
                    }
                    else
                    {
                        Utils.QL_FAIL("Yield curve segment node name not recognized.");
                    }

                    if (segment != null)
                    {
                        try
                        {
                            segment.FromXML(child);
                        }
                        catch (Exception ex)
                        {
                            //ALOG("Exception parsing yield curve segment XML Node, name = " + childName + " and curveID = " + _curveID + " : " + ex.ToString();
                        }
                    }
                    else
                    {
                        //LOG("Unable to build yield curve segment for name = " << childName << " and curveID = " << curveID_);
                    }

                    _curveSegments.Add(segment);
                    child = GetNextSibling(child, "");
                }
            }
            else
            {
                Utils.QL_FAIL("No Segments node in XML doc for yield curve ID = " + _curveID);
            }

            // Read in the optional nodes.

            // Empty strings if not there (or if there and empty).
            _interpolationVariable = GetChildValue(node, "InterpolationVariable", false);
            _interpolationMethod   = GetChildValue(node, "InterpolationMethod", false);
            _zeroDayCounter        = GetChildValue(node, "YieldCurveDayCounter", false);

            // Add hardcoded defaults for now.
            if (_interpolationVariable == "")
            {
                _interpolationVariable = "Discount";
            }
            if (_interpolationMethod == "")
            {
                _interpolationMethod = _interpolationVariable == "Zero" ? "Linear" : "LogLinear";
            }
            if (_zeroDayCounter == "")
            {
                _zeroDayCounter = "A365";
            }
            XmlNode nodeToTest = GetChildNode(node, "Extrapolation");

            if (nodeToTest != null)
            {
                _extrapolation = GetChildValueAsBool(node, "Extrapolation", false);
            }
            else
            {
                _extrapolation = true;
            }
            nodeToTest = GetChildNode(node, "Tolerance");
            if (nodeToTest != null)
            {
                _tolerance = GetChildValueAsDouble(node, "Tolerance", false);
            }
            else
            {
                _tolerance = 1.0e-12;
            }

            PopulateRequiredYieldCurveIDs();
        }
Esempio n. 3
0
 private void addFXForwards(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 4
0
 private void addCrossCcyBasisSwaps(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 5
0
 private void addTenorBasisTwoSwaps(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 6
0
 private void addAverageOISs(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 7
0
 private void addSwaps(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 8
0
 private void addFutures(YieldCurveSegment segment, RateHelper instruments)
 {
 }
Esempio n. 9
0
 // Functions to build RateHelpers from yield curve segments
 private void AddDeposits(YieldCurveSegment segment, List <RateHelper> instruments)
 {
 }