コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
        }