public Zc(DateTime date, DateTime payDate, Currency currency, FinancingId financingId) { FinancingId = financingId; Currency = currency; PayDate = payDate; Date = date; }
private static Market Market() { var refDate = DateTime.Parse("07/06/2009"); var time = TimeMeasure.Act365(refDate); var pillars = new[] { refDate + Duration.Year, refDate + 2 * Duration.Year, refDate + 3 * Duration.Year, refDate + 5 * Duration.Year }; var zcRates = new[] { 0.0010, 0.003, 0.005, 0.008 }; var zcs = zcRates.Select((r, i) => Math.Exp(-time[pillars[i]] * r)).ToArray(); DiscountCurve discountCurve = DiscountCurve.LinearRateInterpol( FinancingId.RiskFree(Currency.Eur), pillars, zcs, time); var market = new Market(new[] { discountCurve }, new AssetMarket[0]); return(market); }
public static object Discount(object mktObj, object[,] dates, string curveId) { return(FunctionRunnerUtils.Run("Discount", () => { var market = MarketManager.Instance.GetMarket(mktObj); var finCurveId = FinancingId.Parse(curveId); DiscountCurve curve = market.DiscountCurve(finCurveId); var result = dates.Map(o => { var dateOrDuration = DateAndDurationConverter.ConvertDateOrDuration(o); var date = dateOrDuration.ToDate(curve.RefDate); return curve.Zc(date); }); return result; })); }
private static AssetMarket[] ProcessAssetMkt(object[,] bag, DateTime refDate, DiscountCurve[] discountCurves) { var eqtyTime = TimeMeasure.Act365(refDate); var assetRawDatas = bag.ProcessLabelledMatrix("Asset", o => o.ToString(), o => o.ToString(), o => o); TimeMatrixDatas repoRawDatas = bag.ProcessTimeMatrixDatas("Repo"); var repoPillars = repoRawDatas.RowLabels .Select(dOrDur => dOrDur.ToDate(refDate)).ToArray(); var assetMkts = new List <AssetMarket>(); for (int i = 0; i < assetRawDatas.RowLabels.Length; i++) { var assetName = assetRawDatas.RowLabels[i]; var rawCurrency = assetRawDatas.GetColFromLabel("Currency")[i].ToString(); object rawSpot = assetRawDatas.GetColFromLabel("Spot")[i]; var currency = Currency.Parse(rawCurrency); var assetId = new AssetId(assetName, currency); double spot; if (!NumberConverter.TryConvertDouble(rawSpot, out spot)) { throw new ArgumentException(String.Format("AssetMarketFactory, invalid {0} spot : {1}", assetName, rawSpot)); } double[] repoRates = repoRawDatas.GetColFromLabel(assetName); var repoZcs = repoRates.Select((r, idx) => Math.Exp(-eqtyTime[repoPillars[idx]] * r)).ToArray(); var repoCurve = DiscountCurve.LinearRateInterpol(FinancingId.AssetCollat(assetId), repoPillars, repoZcs, eqtyTime); var divQuotes = ProcessDiv(bag, refDate, assetName); var volMatrix = AssetVolMatrix(bag, eqtyTime, assetName); var riskFreeDiscount = discountCurves.Single(curve => curve.Financing.Equals(FinancingId.RiskFree(currency))); var mkt = new AssetMarket(assetId, refDate, eqtyTime, spot, riskFreeDiscount, repoCurve, divQuotes, volMatrix); assetMkts.Add(mkt); } return(assetMkts.ToArray()); }
private static DiscountCurve[] RateCurveFromRawDatas(TimeMatrixDatas curveRawDatas, DateTime refDate) { var rateTimeInterpol = RateTimeMeasure(refDate); DateTime[] datePillars = curveRawDatas.RowLabels .Select(dOrDur => dOrDur.ToDate(refDate)).ToArray(); var curves = new List <DiscountCurve>(); foreach (var curveLabel in curveRawDatas.ColLabels) { FinancingId financingId; if (!FinancingId.TryParse(curveLabel, out financingId)) { throw new ArgumentException(String.Format("RateMarketFactory, invalid Discount Curve Id : {0}", curveLabel)); } double[] zcs = curveRawDatas.GetColFromLabel(curveLabel); var discountCurve = DiscountCurve.LinearRateInterpol(financingId, datePillars, zcs, rateTimeInterpol); curves.Add(discountCurve); } return(curves.ToArray()); }
public Leg(TCoupon[] coupons) { this.coupons = coupons; financing = coupons.Select(cpn => cpn.Financing).Distinct().Single(); }