private void recalculateTotal(bool fireUpdate_)
    {
      var setups = new[]
      {
        new {InnerField=FALField.Yield, Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWyy, Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldFwd, Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWFwd, Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldCarry,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWCarry,Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldRoll,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWRoll,Mult=1d,RiskWeight=false},

        new {InnerField=FALField.YieldRollCarry,Mult=1d,RiskWeight=false},
        new {InnerField=FALField.ASWRollCarry,Mult=1d,RiskWeight=false},

      };

      foreach (var setup in setups)
      {
        var dwv = new RiskWeightedStructureValue();
        foreach (var v in Lines.Take(m_structure.Components.Count))
          dwv.AddLeg(
            name_: v.Bond,
            weight_: v.LegMultiplier,
            duration_: setup.RiskWeight ? v.GetValue(FALField.MacaulayDuration) : 1d,
            legUnit_: v.GetValue(setup.InnerField),
            recalc_: false);

        dwv.Recalc();

        CombinedLine.SetValue(setup.InnerField, dwv.Total*setup.Mult, fireUpdate_);
      }

    }
Ejemplo n.º 2
0
    internal RiskWeightedStructureValue getDurationValue(double maturityOffset_)
    {
      if (m_durationWeightedValues.ContainsKey(maturityOffset_))
        return m_durationWeightedValues[maturityOffset_];

      var v = new RiskWeightedStructureValue();

      for (int i = 0; i < Definition.Points.Length; ++i)
      {
        v.AddLeg(
          name_: Definition.Points[i].ToString(),
          weight_: Definition.Points[i].Multiplier,
          duration_:
            CountryBondSource.GetInstance(Definition.Points[i].Market).ModDurationCalculator.ConstantMaturityLine[
              Definition.Points[i].Tenor],
          legUnit_: 0d,
          recalc_: false);
      }

      m_durationWeightedValues[maturityOffset_] = v;

      return v;
    }