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()));
            }
        }
Example #2
0
 public CouvertureIdealeViewModel()
 {
     CurrDate  = new DateTime();
     IdealPort = new PortefeuilleIdeal();
 }