public void UpdatePortfolio(DateTime lastUpdateDate, DateTime newUpdateDate) { int LastUpdateDateIndex = AppData.DaysFromStart(lastUpdateDate); int NewUpdateDateIndex = AppData.DaysFromStart(newUpdateDate); Price = Pricer.price(NewUpdateDateIndex, AppData.MarketData); double riskyAsset; int i, t; for (t = LastUpdateDateIndex + 1; t <= NewUpdateDateIndex; t++) { PortfolioValue = 0; riskyAsset = 0; for (i = 0; i < AppData.NbShares; i++) { PortfolioValue += Deltas[i] * AppData.MarketData[t, i]; } PortfolioValue += NonRiskyAsset * Math.Exp(AppData.R / 365.0); // car deltaTime = 1/365.0 Deltas = Pricer.deltas(t, AppData.MarketData); for (i = 0; i < AppData.NbShares; i++) { riskyAsset += Deltas[i] * AppData.MarketData[t, i]; // nouveau delta calculés } NonRiskyAsset = PortfolioValue - riskyAsset; } }
public PortfolioManager() { Pricer = new Pricer(AppData.ChangeRates, AppData.ObservationDates, AppData.R, AppData.Rho, AppData.Sigmas, AppData.InitialSpots, AppData.Trends); Price = Pricer.price(0, AppData.MarketData); PortfolioValue = Price; Deltas = Pricer.deltas(0, AppData.MarketData); double risky = 0; int i; for (i = 0; i < AppData.NbShares; i++) { risky += Deltas[i] * AppData.InitialSpots[i]; } NonRiskyAsset = PortfolioValue - risky; }