//-------------------------------------------------------------------------
        // present value for one scenario
        private static CurrencyAmount calculatePresentValue(Security security, double quantity, MarketData marketData)
        {
            QuoteId id    = QuoteId.of(security.SecurityId.StandardId);
            double  price = marketData.getValue(id);

            return(security.Info.PriceInfo.calculateMonetaryAmount(quantity, price));
        }
 //-------------------------------------------------------------------------
 // calculates present value for all scenarios
 internal static CurrencyScenarioArray presentValue(Security security, double quantity, ScenarioMarketData marketData)
 {
     return(CurrencyScenarioArray.of(marketData.ScenarioCount, i => calculatePresentValue(security, quantity, marketData.scenario(i))));
 }