/**
  * Constructor of the future option transaction from details.
  *
  * @param underlyingOption The underlying option future security.
  * @param quantity The quantity of the transaction. Can be positive or negative.
  * @param premiumDate The transaction date.
  * @param tradePrice The transaction price.
  */
 public InterestRateFutureOptionPremiumTransactionDefinition(
     final InterestRateFutureOptionPremiumSecurityDefinition underlyingOption,
     final int quantity,
     final ZonedDateTime premiumDate,
     final double tradePrice) {
   ArgChecker.notNull(underlyingOption, "underlying option");
   ArgChecker.notNull(premiumDate, "premium date");
   _underlyingOption = underlyingOption;
   _quantity = quantity;
   _tradePrice = tradePrice;
   final double premiumAmount =
       _tradePrice
           * _underlyingOption.getUnderlyingFuture().getNotional()
           * _underlyingOption.getUnderlyingFuture().getPaymentAccrualFactor();
   _premium =
       new PaymentFixedDefinition(underlyingOption.getCurrency(), premiumDate, premiumAmount);
 }