Пример #1
0
 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);
 }
Пример #3
0
        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);
                }
            }
        }
Пример #5
0
 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;
 }
Пример #6
0
        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);
                }
            }
        }
Пример #7
0
 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);
     }
 }
Пример #8
0
 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;
 }