}
//-------------------------------------------------------------------------
@Override
public ManageableSecurity[] extractSecurities() {
FxOptionTrade trade = getTrade();
FxOptionCalculator calculator = new FxOptionCalculator(trade, trade.getNotional(), trade.getNotionalCurrency());
ExerciseType exerciseType = trade.getExerciseType().convert();
ManageableSecurity security = trade.getSettlementType() == SettlementType.PHYSICAL ?
new FXOptionSecurity(
calculator.getPutCurrency(),
calculator.getCallCurrency(),
calculator.getPutAmount(),
calculator.getCallAmount(),
calculator.getExpiry(),
calculator.getSettlementDate(),
calculator.isLong(),
exerciseType) :
new NonDeliverableFXOptionSecurity(
calculator.getPutCurrency(),
calculator.getCallCurrency(),
calculator.getPutAmount(),
calculator.getCallAmount(),
calculator.getExpiry(),
calculator.getSettlementDate(),
calculator.isLong(),
exerciseType,
trade.getSettlementCurrency().equals(calculator.getCallCurrency().getCode()));
return securityArray(addIdentifier(security));
}