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_); } }