public double CloseExistingPosAndGetFixedPnL(TradeBlotter blotter)
        {
            double result = PosCalcsRoudning(CalcCurrentPnL(blotter));

            Quantity = 0;
            return(result);
        }
        public double CalcCurrentPnL(double price)
        {
            TradeBlotter tradeBlotter = new TradeBlotter();

            tradeBlotter.AskPrice = price;
            tradeBlotter.BidPrice = price;
            return(CalcCurrentPnL(tradeBlotter));
        }
        public static Futures GetFakeFutures(double enterFutPrice, int futPosition, TradeBlotter blotter, double priceStep, double priceVal)
        {
            Futures fut = new Futures("", DateTime.Now, 0.0, 0.0, priceStep, priceVal);

            fut.AssignTradeBlotter(blotter);
            fut.Position.Quantity   = futPosition;
            fut.Position.EnterPrice = enterFutPrice;
            return(fut);
        }
 public void AssignTradeBlotter(TradeBlotter blotter)
 {
     if (blotter != null)
     {
         this.blotter = blotter;
     }
     else
     {
         throw new BasicModelException("Passed blotter to futures is null: " + blotter);
     }
 }
 public double GetMarketPriceToClose(TradeBlotter blotter)
 {
     if (Quantity > 0)
     {
         return(blotter.BidPrice);
     }
     else if (Quantity < 0)
     {
         return(blotter.AskPrice);
     }
     else
     {
         return(0.0);
     }
 }
 public double CalcCurrentPnL(TradeBlotter blotter)
 {
     if (Quantity > 0)
     {
         return(PosCalcsRoudning((blotter.BidPrice - EnterPrice) * Quantity));
     }
     else if (Quantity < 0)
     {
         return(PosCalcsRoudning((blotter.AskPrice - EnterPrice) * Quantity));
     }
     else
     {
         return(0.0);
     }
 }
        public static Option GetFakeOption(OptionType type, double strike, double enterOptPrice,
                                           double remainingDays, int optPosition, TradeBlotter futBlotter, TradeBlotter optBlotter, double priceStep, double priceVal)
        {
            Futures fut = Futures.GetFakeFutures(0.0, 0, futBlotter, priceStep, priceVal);

            Option option = new Option(fut, type, strike, 0.0, 0.0, 0.0, "", priceStep, priceVal, DateTime.Now, remainingDays);

            option.AssignTradeBlotter(optBlotter);
            option.Position.EnterPrice = enterOptPrice;
            option.Position.Quantity   = optPosition;

            option.UpdateAllGreeksTogether();

            return(option);
        }
        public double CalculateExpirationPnL(double futPrice)
        {
            double tempPnL = 0.0;

            TradeBlotter tempBlotter = new TradeBlotter();

            tempBlotter.AskPrice = futPrice;
            tempBlotter.BidPrice = futPrice;

            tempPnL += Futures == null ? 0.0 : Futures.Position.CalcCurrentPnL(tempBlotter);
            tempPnL += FixedPnL;

            foreach (Option opt in Options)
            {
                tempPnL += GreeksCalculator.CalculateOptionPnLOnExpiration(opt, futPrice);
            }

            return(tempPnL);
        }
 public double CalcCurrentPnLInCurrency(TradeBlotter blotter, double step, double stepVal)
 {
     return(PosCalcsRoudning(CalcCurrentPnL(blotter) / step * stepVal));
 }