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); })); }
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; })); }
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); })); }
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; })); }
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)); }
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 } }; })); }