namespace YLErp.Web.Models
{
///
/// 设置观察价格
///
public class SetObservationViewModel
{
public SetObservationViewModel(trade td)
{
trade = td ?? throw new ArgumentNullException(nameof(td));
if (td.IsMoneynessOptionData)
{
switch (td.TradeType)
{
case "障碍期权":
td.trade_barrier_option.BarrierPrice = (td.SpotPrice??0) * td.trade_barrier_option.BarrierPrice;
td.trade_barrier_option.UpperBarrierPrice = td.SpotPrice * td.trade_barrier_option.UpperBarrierPrice;
break;
case "二元期权":
td.trade_binary_option.UpperBarrier = td.SpotPrice * td.trade_binary_option.UpperBarrier;
break;
case "双鲨期权":
td.trade_double_sharkfin_option.BarrierHigh = (td.SpotPrice ?? 0) * td.trade_double_sharkfin_option.BarrierHigh;
td.trade_double_sharkfin_option.BarrierLow = (td.SpotPrice ?? 0) * td.trade_double_sharkfin_option.BarrierLow;
break;
case "区间累积期权":
td.trade_rangeaccrual.LowerRange = (td.SpotPrice ?? 0) * td.trade_rangeaccrual.LowerRange;
td.trade_rangeaccrual.UpperRange = (td.SpotPrice ?? 0) * td.trade_rangeaccrual.UpperRange;
break;
case "凤凰期权":
td.trade_autocall.KIBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.KIBarrier;
td.trade_autocall.KOBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.KOBarrier;
td.trade_autocall.CouponBarrier = (td.SpotPrice ?? 0) * td.trade_autocall.CouponBarrier;
break;
case "雪球期权":
td.trade_snowball.KIBarrier = (td.SpotPrice ?? 0) * td.trade_snowball.KIBarrier;
td.trade_snowball.KOBarrier = (td.SpotPrice ?? 0) * td.trade_snowball.KOBarrier;
td.trade_snowball.SpreadStrikeAtKO = td.SpotPrice * td.trade_snowball.SpreadStrikeAtKO;
break;
case "气囊结构":
td.trade_airbag.Barrier = (td.SpotPrice ?? 0) * td.trade_airbag.Barrier;
break;
case "累计期权":
td.trade_accumulator_option.KOBarrier = (td.SpotPrice ?? 0) * td.trade_accumulator_option.KOBarrier;
break;
}
}
ShowPreObStatus = true;
switch (td.TradeType)
{
case "障碍期权":
PreObStatus = td.trade_barrier_option.KnockInOutStatusCn;
break;
case "双鲨期权":
PreObStatus = td.trade_double_sharkfin_option.KnockInOutStatusCn;
break;
case "凤凰期权":
PreObStatus = td.trade_autocall.KnockInOutStatusCn;
KOBarrier = td.trade_autocall.KOBarrier.OtcFormatFlex(0);
break;
case "雪球期权":
PreObStatus = td.trade_snowball.KnockInOutStatusCn;
KOBarrier = td.trade_snowball.KOBarrier.OtcFormatFlex(0);
break;
case "累计期权":
ShowPreObStatus = false;
PreObStatus = td.trade_accumulator_option.KnockInOutStatusCn;
KOBarrier = td.trade_accumulator_option.KOBarrier.OtcFormatFlex(0);
break;
default:
ShowPreObStatus = false;
break;
}
}
public trade trade { get; private set; }
public string TradeDate => trade?.TradeDate?.ToString("yyyy-MM-dd");
public string ExerciseDate => trade?.ExerciseDate?.ToString("yyyy-MM-dd");
///
/// 观察前状态
///
public string PreObStatus { get; private set; }
///
/// 是否显示观察前状态
///
public bool ShowPreObStatus { get; private set; }
///
///
///
public string SetObservationDate { get; set; }
///
///
///
public double SetObservationPrice { get; set; }
///
/// 敲出障碍价格
///
public string KOBarrier { get; set; }
}
}