Esempio n. 1
0
 public static object PortfolioExpectedEadSplit(
     [ExcelArgument(Description = "Output cube name")] string OutputName,
     [ExcelArgument(Description = "Portfolio")] string Portfolio,
     [ExcelArgument(Description = "Asset-FX Model")] string Model,
     [ExcelArgument(Description = "Reporting currency")] string Currency,
     [ExcelArgument(Description = "Exposure dates")] double[] ExposureDates,
     [ExcelArgument(Description = "AssetId to Category map")] object[,] AssetIdToCategoryMap,
     [ExcelArgument(Description = "Category to CCF map")] object[,] CategoryToCCFMap,
     [ExcelArgument(Description = "Basel II / Basel II cutover date")] DateTime ChangeOverDate)
 {
     return(ExcelHelper.Execute(_logger, () =>
     {
         var portfolio = Instruments.InstrumentFunctions.GetPortfolioOrTradeFromCache(Portfolio);
         var model = ContainerStores.GetObjectCache <IAssetFxModel>().GetObjectOrThrow(Model, $"Asset-FX model {Model} not found");
         var repCcy = ContainerStores.CurrencyProvider.GetCurrency(Currency);
         var expDates = ExposureDates.ToDateTimeArray(model.Value.BuildDate);
         var models = new IAssetFxModel[expDates.Length];
         var m = model.Value.Clone();
         for (var i = 0; i < models.Length; i++)
         {
             m = m.RollModel(expDates[i], ContainerStores.CurrencyProvider);
             models[i] = m;
         }
         var assetIdToCategory = AssetIdToCategoryMap.RangeToDictionary <string, string>();
         var categoryToCCF = CategoryToCCFMap.RangeToDictionary <string, double>();
         var result = CapitalCalculator.EAD_Split(model.Value.BuildDate, expDates, models, portfolio, repCcy,
                                                  assetIdToCategory, categoryToCCF, ChangeOverDate, ContainerStores.CurrencyProvider);
         var cube = ExcelHelper.PackResults(expDates, result, "EAD");
         return ExcelHelper.PushToCache(cube, OutputName);
     }));
 }
Esempio n. 2
0
 public static object PortfolioPvCvaCapital_B2_SM(
     [ExcelArgument(Description = "Discount curve")] string DiscountCurve,
     [ExcelArgument(Description = "Portfolio")] string Portfolio,
     [ExcelArgument(Description = "Asset-FX Model")] string Model,
     [ExcelArgument(Description = "Reporting currency")] string Currency,
     [ExcelArgument(Description = "Exposure dates")] double[] ExposureDates,
     [ExcelArgument(Description = "Party risk weight")] double CvaRiskWeight,
     [ExcelArgument(Description = "AssetId to Category map")] object[,] AssetIdToCategoryMap,
     [ExcelArgument(Description = "Category to CCF map")] object[,] CategoryToCCFMap)
 {
     return(ExcelHelper.Execute(_logger, () =>
     {
         var disc = ContainerStores.GetObjectCache <IIrCurve>().GetObjectOrThrow(DiscountCurve, $"Discount curve {DiscountCurve} not found");
         var portfolio = Instruments.InstrumentFunctions.GetPortfolioOrTradeFromCache(Portfolio);
         var model = ContainerStores.GetObjectCache <IAssetFxModel>().GetObjectOrThrow(Model, $"Asset-FX model {Model} not found");
         var repCcy = ContainerStores.CurrencyProvider.GetCurrency(Currency);
         var expDates = ExposureDates.ToDateTimeArray(model.Value.BuildDate);
         var models = new IAssetFxModel[expDates.Length];
         var m = model.Value.Clone();
         for (var i = 0; i < models.Length; i++)
         {
             m = m.RollModel(expDates[i], ContainerStores.CurrencyProvider);
             models[i] = m;
         }
         var assetIdToCategory = AssetIdToCategoryMap.RangeToDictionary <string, string>();
         var categoryToCCF = CategoryToCCFMap.RangeToDictionary <string, double>();
         var result = CapitalCalculator.PvCvaCapital_BII_SM(model.Value.BuildDate, expDates, models, portfolio, repCcy, disc.Value, CvaRiskWeight, assetIdToCategory, categoryToCCF, ContainerStores.CurrencyProvider);
         return result;
     }));
 }
Esempio n. 3
0
 public static object PortfolioExpectedEad_B2_SM(
     [ExcelArgument(Description = "Output cube name")] string OutputName,
     [ExcelArgument(Description = "Portfolio")] string Portfolio,
     [ExcelArgument(Description = "Asset-FX Model")] string Model,
     [ExcelArgument(Description = "Reporting currency")] string Currency,
     [ExcelArgument(Description = "EPE cube")] string EPECube,
     [ExcelArgument(Description = "AssetId to Category map")] object[,] AssetIdToCategoryMap,
     [ExcelArgument(Description = "Category to CCF map")] object[,] CategoryToCCFMap)
 {
     return(ExcelHelper.Execute(_logger, () =>
     {
         var epeCube = ContainerStores.GetObjectCache <ICube>().GetObjectOrThrow(EPECube, $"EPE cube {EPECube} not found");
         var portfolio = Instruments.InstrumentFunctions.GetPortfolioOrTradeFromCache(Portfolio);
         var model = ContainerStores.GetObjectCache <IAssetFxModel>().GetObjectOrThrow(Model, $"Asset-FX model {Model} not found");
         var repCcy = ContainerStores.CurrencyProvider.GetCurrency(Currency);
         var expDates = epeCube.Value.GetAllRows().Select(r => (DateTime)r.MetaData[0]).ToArray();
         var epeValues = epeCube.Value.GetAllRows().Select(r => r.Value).ToArray();
         var models = new IAssetFxModel[expDates.Length];
         var m = model.Value.TrimModel(portfolio);
         for (var i = 0; i < models.Length; i++)
         {
             m = m.RollModel(expDates[i], ContainerStores.CurrencyProvider);
             models[i] = m;
         }
         var assetIdToCategory = AssetIdToCategoryMap.RangeToDictionary <string, string>();
         var categoryToCCF = CategoryToCCFMap.RangeToDictionary <string, double>();
         var result = CapitalCalculator.EAD_BII_SM(model.Value.BuildDate, expDates, epeValues, models, portfolio, repCcy, assetIdToCategory, categoryToCCF, ContainerStores.CurrencyProvider);
         var cube = ExcelHelper.PackResults(expDates, result, "EAD");
         return ExcelHelper.PushToCache(cube, OutputName);
     }));
 }
Esempio n. 4
0
        public static object PortfolioPvCcrCapital(
            [ExcelArgument(Description = "Portfolio")] string Portfolio,
            [ExcelArgument(Description = "Expected EAD cube name")] string EADCubeName,
            [ExcelArgument(Description = "Credit settings object name")] string CreditSettingsName,
            [ExcelArgument(Description = "Origin date")] DateTime OriginDate)
        {
            return(ExcelHelper.Execute(_logger, () =>
            {
                var eadCube = ContainerStores.GetObjectCache <ICube>()
                              .GetObjectOrThrow(EADCubeName, $"Could not find cube with name {EADCubeName}");
                var creditSettings = ContainerStores.GetObjectCache <CreditSettings>()
                                     .GetObjectOrThrow(CreditSettingsName, $"Could not find credit settings with name {CreditSettingsName}");
                var portfolio = Instruments.InstrumentFunctions.GetPortfolioOrTradeFromCache(Portfolio);

                var result = CapitalCalculator.PVCapital_BII_IMM(OriginDate, eadCube.Value, creditSettings.Value.CreditCurve, creditSettings.Value.BaseDiscountCurve, creditSettings.Value.LGD, portfolio);
                return result;
            }));
        }
Esempio n. 5
0
 public ActionResult Index(CompareModel model)
 {
     if (ModelState.IsValid)
     {
         CapitalCalculator calc = new CapitalCalculator
         {
             Money   = model.Money,
             Percent = model.Percent
         };
         string[] dates = model.Range.Split('-');
         calc.StartDate = DateTime.ParseExact(dates[0], "MM/dd/yyyy ", CultureInfo.InvariantCulture);
         calc.StopDate  = DateTime.ParseExact(dates[1], " MM/dd/yyyy", CultureInfo.InvariantCulture);
         var result = calc.GetIncome(FundList);
         ViewBag.depositIncome = result.Item2;
         ViewBag.fundIncome    = result.Item1;
         ViewBag.chart         = calc.Chart;
         return(View(model));
     }
     return(View(model));
 }
Esempio n. 6
0
 public static object PortfolioPvCapitalSplit(
     [ExcelArgument(Description = "Discount curve")] string DiscountCurve,
     [ExcelArgument(Description = "Hazzard curve")] string HazzardCurve,
     [ExcelArgument(Description = "Portfolio")] string Portfolio,
     [ExcelArgument(Description = "Asset-FX Model")] string Model,
     [ExcelArgument(Description = "Reporting currency")] string Currency,
     [ExcelArgument(Description = "EPE cube")] string EPECube,
     [ExcelArgument(Description = "Loss-Given-Default")] double LGD,
     [ExcelArgument(Description = "Cva risk weight")] double CvaRiskWeight,
     [ExcelArgument(Description = "Party risk weight")] double PartyRiskWeight,
     [ExcelArgument(Description = "AssetId to Category map")] object[,] AssetIdToCategoryMap,
     [ExcelArgument(Description = "Category to CCF map")] object[,] CategoryToCCFMap,
     [ExcelArgument(Description = "Basel II / Basel II cutover date")] DateTime ChangeOverDate)
 {
     return(ExcelHelper.Execute(_logger, () =>
     {
         var epeCube = ContainerStores.GetObjectCache <ICube>().GetObjectOrThrow(EPECube, $"EPE cube {EPECube} not found");
         var disc = ContainerStores.GetObjectCache <IIrCurve>().GetObjectOrThrow(DiscountCurve, $"Discount curve {DiscountCurve} not found");
         var hz = ContainerStores.GetObjectCache <HazzardCurve>().GetObjectOrThrow(HazzardCurve, $"Hazzard curve {HazzardCurve} not found");
         var portfolio = Instruments.InstrumentFunctions.GetPortfolioOrTradeFromCache(Portfolio);
         var model = ContainerStores.GetObjectCache <IAssetFxModel>().GetObjectOrThrow(Model, $"Asset-FX model {Model} not found");
         var repCcy = ContainerStores.CurrencyProvider.GetCurrency(Currency);
         var expDates = epeCube.Value.GetAllRows().Select(r => (DateTime)r.MetaData[0]).ToArray();
         var epeValues = epeCube.Value.GetAllRows().Select(r => r.Value).ToArray();
         var models = new IAssetFxModel[expDates.Length];
         var m = model.Value.TrimModel(portfolio);
         for (var i = 0; i < models.Length; i++)
         {
             m = m.RollModel(expDates[i], ContainerStores.CurrencyProvider);
             models[i] = m;
         }
         var assetIdToCategory = AssetIdToCategoryMap.RangeToDictionary <string, string>();
         var categoryToCCF = CategoryToCCFMap.RangeToDictionary <string, double>();
         var result = CapitalCalculator.PvCapital_Split(model.Value.BuildDate, expDates, models, portfolio, hz.Value, repCcy, disc.Value,
                                                        LGD, CvaRiskWeight, PartyRiskWeight, assetIdToCategory, categoryToCCF, ContainerStores.CurrencyProvider, epeValues, ChangeOverDate);
         return new object [, ] {
             { "CCR PV", result.CCR }, { "CVA PV", result.CVA }
         };
     }));
 }