public void TestCurrencyAmount() { // test to string CurrencyAmount amount = new CurrencyAmount(123.45); Assert.AreEqual("123.45", amount.ToString()); // test parse amount = CurrencyAmount.Parse("123.45"); Assert.AreEqual("123.45", amount.ToString()); // test add CurrencyAmount amount2 = new CurrencyAmount(543.21); amount = new CurrencyAmount(123.45); Assert.AreEqual("666.66", CurrencyAmount.Add(amount, amount2).ToString()); amount.AddTo(amount2); Assert.AreEqual("666.66", amount.ToString()); // test minus amount2 = new CurrencyAmount(543.21); amount = new CurrencyAmount(123.45); Assert.AreEqual("-419.76", CurrencyAmount.Minus(amount, amount2).ToString()); Assert.AreEqual("419.76", CurrencyAmount.Minus(amount2, amount).ToString()); Assert.AreEqual("0.00", CurrencyAmount.Minus(amount2, amount2).ToString()); // is zero Assert.AreEqual(true, CurrencyAmount.Minus(amount2, amount2).IsZero()); }
protected override void OnPropertyChanged(string propertyName = null) { base.OnPropertyChanged(propertyName); if (propertyName == CurrencyCodeProperty.PropertyName) { currencyCode.Text = CurrencyCode; if (CurrencyCode == "BTCZ") { removeButton.IsVisible = false; currencyRate.IsVisible = false; sendButton.IsVisible = true; //receiveButton.IsVisible = true; } } else if (propertyName == CurrencyNameProperty.PropertyName) { currencyName.Text = CurrencyName; //if (CurrencyCode == "BTCZ") //{ // removeButton.IsVisible = false; //} } else if (propertyName == CurrencyAmountProperty.PropertyName) { currencyAmount.Text = CurrencyAmount.ToString(); } else if (propertyName == CurrencyRateProperty.PropertyName) { currencyRate.Text = String.Format("Rate: {0}", CurrencyRate.ToString()); } }
/// <summary> /// Parse memory to xml /// </summary> /// <returns></returns> public override XElement ToXML() { XElement xelem = base.ToXML(); if (_bankAccount != null) { xelem.Add(new XAttribute(MasterDataUtils.XML_BANK_ACCOUNT , _bankAccount.ToString())); } xelem.Add(new XAttribute(MasterDataUtils.XML_INIT_AMOUNT , _initAmount.ToString())); return(xelem); }
/// <summary> /// set balance data /// </summary> private void setBalanceData() { // int index = MonthSelection.SelectedIndex; MonthItem monthItem = MonthSelection.SelectedItem as MonthItem; if (monthItem == null) { return; } CoreDriver coreDriver = DataCore.GetInstance().BackendCoreDriver; if (coreDriver.IsInitialize == false) { return; } TransactionDataManagement transMgmt = coreDriver.TransMgmt; GLAccountBalanceCollection balCol = transMgmt.AccountBalanceCol; #region revenue CurrencyAmount revenue = new CurrencyAmount(); foreach (GLAccountGroupENUM group in GLAccountGroup.REVENUE_GROUP) { CurrencyAmount cur = balCol .GetGroupBalance(group, monthItem.MonthId, monthItem.MonthId); cur.Negate(); revenue.AddTo(cur); } // set value incomingAmount.Text = revenue.ToString(); #endregion #region cost CurrencyAmount cost = new CurrencyAmount(); foreach (GLAccountGroupENUM group in GLAccountGroup.COST_GROUP) { CurrencyAmount cur = balCol .GetGroupBalance(group, monthItem.MonthId, monthItem.MonthId); cost.AddTo(cur); } // set value this.outgoingAmount.Text = cost.ToString(); #endregion #region balance CurrencyAmount balance = new CurrencyAmount(); foreach (GLAccountGroupENUM group in GLAccountGroup.BALANCE_GROUP) { CurrencyAmount cur = balCol .GetGroupBalance(group); balance.AddTo(cur); } // set value this.balanceAmount.Text = balance.ToString(); #endregion #region liquidity CurrencyAmount liquidity = new CurrencyAmount(); foreach (GLAccountGroupENUM group in GLAccountGroup.Liquidity_GROUP) { CurrencyAmount cur = balCol .GetGroupBalance(group); liquidity.AddTo(cur); } // set value this.liquidityAmount.Text = liquidity.ToString(); #endregion }
//------------------------------------------------------------------------- /// <summary> /// Runs the calibration of SABR on swaptions and print on the console the present value, bucketed PV01 and /// the bucketed Vega of a 18M x 4Y swaption. /// </summary> /// <param name="args"> -s to use the spares data </param> public static void Main(string[] args) { long start, end; // Swaption description BuySell payer = BuySell.BUY; Period expiry = Period.ofMonths(18); double notional = 1_000_000; double strike = 0.0100; Tenor tenor = Tenor.TENOR_4Y; LocalDate expiryDate = EUR_FIXED_1Y_EURIBOR_6M.FloatingLeg.StartDateBusinessDayAdjustment.adjust(CALIBRATION_DATE.plus(expiry), REF_DATA); SwapTrade underlying = EUR_FIXED_1Y_EURIBOR_6M.createTrade(expiryDate, tenor, payer, notional, strike, REF_DATA); Swaption swaption = Swaption.builder().expiryDate(AdjustableDate.of(expiryDate)).expiryTime(LocalTime.of(11, 0x0)).expiryZone(ZoneId.of("Europe/Berlin")).underlying(underlying.Product).longShort(LongShort.LONG).swaptionSettlement(PhysicalSwaptionSettlement.DEFAULT).build(); ResolvedSwaption resolvedSwaption = swaption.resolve(REF_DATA); // select data TenorRawOptionData data = DATA_FULL; if (args.Length > 0) { if (args[0].Equals("-s")) { data = DATA_SPARSE; } } start = DateTimeHelper.CurrentUnixTimeMillis(); // Curve calibration RatesProvider multicurve = CALIBRATOR.calibrate(CONFIGS, MARKET_QUOTES, REF_DATA); end = DateTimeHelper.CurrentUnixTimeMillis(); Console.WriteLine("Curve calibration time: " + (end - start) + " ms."); // SABR calibration start = DateTimeHelper.CurrentUnixTimeMillis(); double beta = 0.50; SurfaceMetadata betaMetadata = DefaultSurfaceMetadata.builder().xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.YEAR_FRACTION).zValueType(ValueType.SABR_BETA).surfaceName("Beta").build(); Surface betaSurface = ConstantSurface.of(betaMetadata, beta); double shift = 0.0300; Surface shiftSurface = ConstantSurface.of("SABR-Shift", shift); SabrParametersSwaptionVolatilities sabr = SABR_CALIBRATION.calibrateWithFixedBetaAndShift(DEFINITION, CALIBRATION_TIME, data, multicurve, betaSurface, shiftSurface); end = DateTimeHelper.CurrentUnixTimeMillis(); Console.WriteLine("SABR calibration time: " + (end - start) + " ms."); // Price and risk Console.WriteLine("Risk measures: "); start = DateTimeHelper.CurrentUnixTimeMillis(); CurrencyAmount pv = SWAPTION_PRICER.presentValue(resolvedSwaption, multicurve, sabr); Console.WriteLine(" |-> PV: " + pv.ToString()); PointSensitivities deltaPts = SWAPTION_PRICER.presentValueSensitivityRatesStickyModel(resolvedSwaption, multicurve, sabr).build(); CurrencyParameterSensitivities deltaBucketed = multicurve.parameterSensitivity(deltaPts); Console.WriteLine(" |-> Delta bucketed: " + deltaBucketed.ToString()); PointSensitivities vegaPts = SWAPTION_PRICER.presentValueSensitivityModelParamsSabr(resolvedSwaption, multicurve, sabr).build(); Console.WriteLine(" |-> Vega point: " + vegaPts.ToString()); CurrencyParameterSensitivities vegaBucketed = sabr.parameterSensitivity(vegaPts); for (int i = 0; i < vegaBucketed.size(); i++) { Console.WriteLine(" |-> Vega bucketed: " + vegaBucketed.Sensitivities.get(i)); } end = DateTimeHelper.CurrentUnixTimeMillis(); Console.WriteLine("PV and risk time: " + (end - start) + " ms."); }