public void NettQuantity_Should_Be_Negative_If_Action_Is_Sell() { _equityTransaction = new EquityTransaction { Quantity = 10, Action = "Sell" }; Assert.IsTrue(_equityTransaction.NettQuantity < 0); }
/// <summary> /// Builds this instance and retruns the underlying instrument associated with the controller /// </summary> /// <returns></returns> public EquityTransaction Build() { //var equity = UnderlyingEquity.(); var buyerPartyReference = PartyReferenceHelper.Parse(BuyerReference); var sellerPartyReference = PartyReferenceHelper.Parse(SellerReference); var productType = new object[] { ProductTypeHelper.Create("EquityTransaction") }; var itemName = new[] { ItemsChoiceType2.productType }; var equity = XmlSerializerHelper.Clone(EquityTypeInfo.Equity); var equityTransaction = new EquityTransaction { buyerPartyReference = buyerPartyReference, sellerPartyReference = sellerPartyReference, id = Id, Items = productType, ItemsElementName = itemName, numberOfUnits = NumberOfShares, unitPrice = XmlSerializerHelper.Clone(PurchasePrice), equity = equity }; return(equityTransaction); }
public void Init() { _equityTransaction = new EquityTransaction { Quantity = 10, Action = "Buy", Price = 3 }; }
/// <summary> /// /// </summary> /// <param name="logger"></param> /// <param name="cache"></param> /// <param name="nameSpace"></param> /// <param name="tradeDate"></param> /// <param name="effectiveDate"></param> /// <param name="referenceEquity"></param> /// <param name="settlementCalendar"></param> /// <param name="equityFpML"></param> /// <param name="basePartyReference"></param> /// <param name="forecastRateInterpolation"></param> public EquityTransactionPricer(ILogger logger, ICoreCache cache, string nameSpace, DateTime tradeDate, DateTime effectiveDate, String referenceEquity, IBusinessCalendar settlementCalendar, EquityTransaction equityFpML, string basePartyReference, Boolean forecastRateInterpolation) { logger.LogInfo("EquityType set. Commence to build a equity transaction."); if (equityFpML == null) { return; } SettlementDate = effectiveDate; TradeDate = tradeDate; Multiplier = 1.0m; BuyerReference = equityFpML.buyerPartyReference.href; PaymentCurrencies = new List <string> { equityFpML.unitPrice.currency.Value }; SellerReference = equityFpML.sellerPartyReference.href; BasePartyBuyer = basePartyReference == equityFpML.buyerPartyReference.href; ForecastRateInterpolation = forecastRateInterpolation; SettlementCalendar = settlementCalendar; ReferenceEquity = referenceEquity; NumberOfShares = Convert.ToInt16(equityFpML.numberOfUnits); PurchasePrice = MoneyHelper.GetAmount(equityFpML.unitPrice.amount, equityFpML.unitPrice.currency.Value); PaymentCurrencies = new List <string> { equityFpML.unitPrice.currency.Value }; var exchangeMIC = equityFpML.equity.exchangeId; var exchangeMICData = InstrumentDataHelper.CreateEquityExchangeKey(nameSpace, exchangeMIC.Value); var exchangeData = cache.LoadItem <ExchangeConfigData>(exchangeMICData); if (exchangeData?.Data is ExchangeConfigData) { var exchange = (ExchangeConfigData)exchangeData.Data; var equityTypeInfo = new EquityNodeStruct { SettlementDate = exchange.SettlementDate }; if (equityFpML.equity != null) { if (SettlementCalendar == null) { SettlementCalendar = BusinessCenterHelper.ToBusinessCalendar(cache, equityTypeInfo.SettlementDate .businessCenters, nameSpace); } if (PaymentCalendar == null) { PaymentCalendar = SettlementCalendar; } var equity = XmlSerializerHelper.Clone(equityFpML.equity); EquityTypeInfo = XmlSerializerHelper.Clone(equityTypeInfo); EquityTypeInfo.Equity = equity;; RiskMaturityDate = SettlementDate; MaturityDate = SettlementDate; if (!PaymentCurrencies.Contains(equityFpML.equity.currency.Value)) { PaymentCurrencies.Add(equityFpML.equity.currency.Value); } logger.LogInfo("Equity transaction has been successfully created."); } } else { logger.LogInfo("Equity type data not available."); } //Add payments like the settlement price if (PurchasePrice == null || !PurchasePrice.amountSpecified) { return; } var amount = PurchasePrice.amount * NumberOfShares; var settlementPayment = PaymentHelper.Create("EquitySettlemetAmount", BuyerReference, SellerReference, amount, SettlementDate); AdditionalPayments = PriceableInstrumentsFactory.CreatePriceablePayments(basePartyReference, new[] { settlementPayment }, PaymentCalendar); if (!PaymentCurrencies.Contains(settlementPayment.paymentAmount.currency.Value)) { PaymentCurrencies.Add(settlementPayment.paymentAmount.currency.Value); } }
/// <summary> /// /// </summary> /// <param name="logger"></param> /// <param name="cache"></param> /// <param name="nameSpace"></param> /// <param name="tradeDate"></param> /// <param name="effectiveDate"></param> /// <param name="referenceEquity"></param> /// <param name="settlementCalendar"></param> /// <param name="equityFpML"></param> /// <param name="basePartyReference"></param> public EquityTransactionPricer(ILogger logger, ICoreCache cache, string nameSpace, DateTime tradeDate, DateTime effectiveDate, String referenceEquity, IBusinessCalendar settlementCalendar, EquityTransaction equityFpML, string basePartyReference) : this(logger, cache, nameSpace, tradeDate, effectiveDate, referenceEquity, settlementCalendar, equityFpML, basePartyReference, false) { }