public PositionTransferPortfolio(IAccountTypeInternal account, DateTime positionDate, IPositionTransfer parentTransfer) : this() { this.Account = account; this.PositionDate = positionDate; this.ParentTransfer = parentTransfer; }
public PositionTransferReportPortfolio(IAccountTypeInternal account, DateTime positionDate, IPositionTransfer parentTransfer, IPositionTransferPortfolio beforePortfolio, IPositionTransferPortfolio afterPortfolio) : this() { this.Account = account; this.PositionDate = positionDate; this.ParentTransfer = parentTransfer; this.BeforePortfolio = beforePortfolio; this.AfterPortfolio = afterPortfolio; assembleReportPositions(parentTransfer); }
public static DataSet PortfolioTransferReport(IAccountTypeInternal account, DateTime positionDate, IPositionTransfer parentTransfer, IPositionTransferPortfolio beforePortfolio, IPositionTransferPortfolio afterPortfolio) { DataSet ds = new DataSet(); IPositionTransferReportPortfolio returnValue = new PositionTransferReportPortfolio(account, positionDate, parentTransfer, beforePortfolio, afterPortfolio); return ds; }
private void assembleReportPositions(IPositionTransfer parentTransfer) { IPositionTransferPositionCollection afterPortfolio = AfterPortfolio != null ? AfterPortfolio.Positions : new PositionTransferPositionCollection(); if (BeforePortfolio != null && BeforePortfolio.Positions != null && BeforePortfolio.Positions.Count > 0) { var uniqueInstruments = BeforePortfolio.Positions.Select(p => new { Before = true, Position = p }) .Concat(afterPortfolio.Select(p => new { Before = false, Position = p })) .GroupBy(i => i.Position.PositionSize.Underlying.Key) .Select(g => new { Before = g.FirstOrDefault(p => p.Before), After = g.FirstOrDefault(p => !p.Before), g.First().Position.ActualPrice, g.First().Position.ExchangeRate, UnderLying = g.First().Position.PositionSize.Underlying }) .ToArray(); foreach (var line in uniqueInstruments) { IPositionTransferReportPosition pos = new PositionTransferReportPosition(); pos.ExchangeRate = line.ExchangeRate; pos.ActualPrice = line.ActualPrice; pos.InstrumentOfPosition = line.UnderLying; if (line.Before != null) { IPositionTransferPosition before = line.Before.Position; pos.BeforePositionSize = before.Get(p => p.PositionSize); pos.ValueinEuroBefore = before.Get(p => p.ValueinEuro); pos.PercentageOfPortfolioBefore = before.GetV(p => p.PercentageOfPortfolio).HasValue ? before.GetV(p => p.PercentageOfPortfolio).Value : 0m; } else { pos.BeforePositionSize = new InstrumentSize(0m, line.UnderLying); pos.ValueinEuroBefore = new Money(0m, getCurrencyFromInstrument(line.UnderLying)); pos.PercentageOfPortfolioBefore = 0m; } if (line.After != null) { IPositionTransferPosition after = line.After.Position; pos.AfterPositionSize = after.Get(p => p.PositionSize); pos.ValueinEuroAfter = after.Get(p => p.ValueinEuro); pos.PercentageOfPortfolioAfter = after.GetV(p => p.PercentageOfPortfolio).HasValue ? after.GetV(p => p.PercentageOfPortfolio).Value : 0m; } else { pos.AfterPositionSize = new InstrumentSize(0m, line.UnderLying); pos.ValueinEuroAfter = new Money(0m, getCurrencyFromInstrument(line.UnderLying)); pos.PercentageOfPortfolioAfter = 0m; } //IPositionTransferReportPosition pos = new PositionTransferReportPosition(); //pos.ExchangeRate = line.ExchangeRate; //pos.TransferPrice = line.TransferPrice; //IPositionTransferPosition before = BeforePortfolio.Positions.Where(b => b.PositionSize.Underlying.Key == line.Key).ToList().FirstOrDefault(); //IPositionTransferPosition after = AfterPortfolio.Positions.Where(b => b.PositionSize.Underlying.Key == line.Key).ToList().FirstOrDefault(); //if (before != null) //{ // pos.BeforePositionSize = before.PositionSize; // pos.ValueinEuroBefore = before.ValueinEuro; // pos.PercentageOfPortfolioBefore = before.PercentageOfPortfolio; //} //else //{ // //pos.BeforePositionSize = new InstrumentSize(0m, line.Underlying); // //pos.ValueinEuroBefore = new Money(0m, getCurrencyFromInstrument(line.Underlying)); // //pos.PercentageOfPortfolioBefore = 0m; //} //if (after != null) //{ // pos.AfterPositionSize = after.PositionSize; // pos.ValueinEuroAfter = after.ValueinEuro; // pos.PercentageOfPortfolioAfter = after.PercentageOfPortfolio; //} //else //{ // //pos.AfterPositionSize = new InstrumentSize(0m, line.Underlying); // //pos.ValueinEuroAfter = new Money(0m, getCurrencyFromInstrument(line.Underlying)); // pos.PercentageOfPortfolioAfter = 0m; //} this.Positions.AddPosition(pos); } } }
public PositionTransferDetails(IPositionTransfer transfer) { this.AIsInternal = transfer.AIsInternal; this.BIsInternal = transfer.BIsInternal; if (transfer.AccountA != null) this.AccountAID = transfer.AccountA.Key; if (transfer.AccountB != null) this.AccountBID = transfer.AccountB.Key; this.TransferDate = transfer.TransferDate; this.TypeOfTransfer = transfer.TypeOfTransfer; this.TransferAmount = transfer.TransferAmount == null ? 0 : transfer.TransferAmount.Quantity; this.Status = transfer.TransferStatus; this.IsInitialised = transfer.IsInitialised; this.IsEditable = transfer.IsEditable; }
private static void executeFundTransfer(IDalSession session, IPositionTransferDetailCollection transferDetails, IPositionTransfer transfer) { var fundPositions = transferDetails.Where(p => p.IsFundPosition); bool transferOut; foreach (IPositionTransferDetail detail in fundPositions) { if (transfer.AIsInternal) { transferOut = (detail.TxDirection == TransferDirection.FromAtoB); ITransactionNTM tradeOut = transferPosition(session, detail, transfer.AccountA, transferOut); detail.Transactions.AddTransactionNTM(tradeOut); } if (transfer.BIsInternal) { transferOut = (detail.TxDirection == TransferDirection.FromBtoA); ITransactionNTM tradeIn = transferPosition(session, detail, transfer.AccountB, transferOut); detail.Transactions.AddTransactionNTM(tradeIn); } } }
private static void createTransferDetails(IPositionTransferPortfolio currentPortfolio, TransferType typeOfTransfer, decimal transferAmount, IPositionTransfer parent) { foreach (IPositionTransferPosition pos in currentPortfolio.Positions) { IPositionTransferDetail newDetail = new PositionTransferDetail(pos, typeOfTransfer, transferAmount); parent.TransferDetails.AddPosition(newDetail); } }
private static IPositionTransferPortfolio assemblePortfolio(IDalSession session, int accountId, DateTime positionDate, IPositionTransfer transfer) { IPortfolioHistorical portfolio = HistoricalPositionAdapter.GetHistoricalPortfolio(session, accountId, positionDate); IList<HistoricalPositionRowView> portfolioRows = GetHistoricalPositions(session, portfolio); IPositionTransferPortfolio transferPortfolio = new PositionTransferPortfolio(portfolio.ParentAccount, positionDate, transfer); foreach (HistoricalPositionRowView row in portfolioRows) { IPositionTransferPosition newRow = new PositionTransferPosition(); newRow.PositionSize = row.PositionSize; newRow.ActualPrice = row.Price; newRow.ExchangeRate = row.ExchangeRate; newRow.ValueinEuro = row.Value; newRow.PercentageOfPortfolio = row.Percentage; transferPortfolio.Positions.AddPosition(newRow); } return transferPortfolio; }