public ActionResult UpdatePortefeuille() { using (DAL dal = new DAL()) { DateTime currD = dal.GetParams().CurrDate; double portValue = 0.0; double optimumValue = 0.0; MultiMondeParam param = dal.GetParams(); PortefeuilleIdeal IdealPort = dal.getPortOpti(); double currTDC; double currP; double currZC; double Tmoinst = (param.EndDate - currD).TotalDays / 365.25; List <Indice> indList = dal.GetIndices(); double tauxEuro = 0.0; foreach (Indice ind in indList) { if (ind.Money == "eur") { tauxEuro = ind.InterestRateThisArea; currTDC = 1.0; } else { currTDC = dal.getSingleChange(currD, "EUR" + ind.Money.ToUpper()); } currP = dal.getSingleData(currD, ind.Nom.ToUpper()) / currTDC; currZC = Math.Exp(-ind.InterestRateThisArea * Tmoinst) / currTDC; portValue += dal.getPortefeuilleCouverture().GetDelta(ind.Nom) * currP; portValue += dal.getPortefeuilleCouverture().GetDelta(ind.Money) * currZC; optimumValue += IdealPort.GetDelta(ind.Nom) * currP; optimumValue += IdealPort.GetDelta(ind.Money) * currZC; dal.SetDelta(ind.Nom, IdealPort.GetDelta(ind.Nom)); dal.SetDelta(ind.Money, IdealPort.GetDelta(ind.Money)); } double restant = portValue - optimumValue; restant *= Math.Exp(tauxEuro * Tmoinst); restant += IdealPort.GetDelta("eur"); dal.SetDelta("eur", restant); return(PartialView("Couverture", dal.getPortefeuilleCouverture())); } }
public CouvertureIdealeViewModel() { CurrDate = new DateTime(); IdealPort = new PortefeuilleIdeal(); }