185 lines
4.4 KiB
C#
185 lines
4.4 KiB
C#
namespace YLErp.Modules.TradeModule.ExoticOptionModule
|
|
{
|
|
/// <summary>
|
|
/// 预付金雪球赔付
|
|
/// </summary>
|
|
public abstract class PrepaymentSnowballPayoff
|
|
{
|
|
/// <summary>
|
|
/// 利息金额(买方角度)
|
|
/// </summary>
|
|
public double InterestAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 预付金金额(买方角度)
|
|
/// </summary>
|
|
public double PrepaymentAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 倒置符号(将正值倒置为负值,负值倒置为正值)
|
|
/// </summary>
|
|
public virtual void InvertSign()
|
|
{
|
|
InterestAmount = -InterestAmount;
|
|
PrepaymentAmount = -PrepaymentAmount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球敲出赔付
|
|
/// </summary>
|
|
public class PrepaymentSnowballKoPayoff : PrepaymentSnowballPayoff
|
|
{
|
|
/// <summary>
|
|
/// 票息金额(买方金额)
|
|
/// </summary>
|
|
public double CouponPaymentAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 增强收益金额(买方金额)
|
|
/// </summary>
|
|
public double EnhancedPaymentAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 敲出票息开始日
|
|
/// </summary>
|
|
public DateTime CouponStartDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 敲出票息结束日
|
|
/// </summary>
|
|
public DateTime CouponEndDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 票息率
|
|
/// </summary>
|
|
public double CouponRate { get; set; }
|
|
|
|
public double TotalAmount()
|
|
{
|
|
return CouponPaymentAmount + EnhancedPaymentAmount + InterestAmount;
|
|
}
|
|
|
|
public override void InvertSign()
|
|
{
|
|
base.InvertSign();
|
|
|
|
CouponPaymentAmount = -CouponPaymentAmount;
|
|
EnhancedPaymentAmount = -EnhancedPaymentAmount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球到期日敲入赔付
|
|
/// </summary>
|
|
public class PrepaymentSnowballKiPayoff : PrepaymentSnowballPayoff
|
|
{
|
|
/// <summary>
|
|
/// 期权赔付金额(买方角度)
|
|
/// </summary>
|
|
public double OptionPaymentAmount { get; set; }
|
|
|
|
public double TotalAmount()
|
|
{
|
|
return OptionPaymentAmount + InterestAmount;
|
|
}
|
|
|
|
public override void InvertSign()
|
|
{
|
|
base.InvertSign();
|
|
|
|
OptionPaymentAmount = -OptionPaymentAmount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球到期日未敲入赔付
|
|
/// </summary>
|
|
public class PrepaymentSnowballNkiPayoff : PrepaymentSnowballPayoff
|
|
{
|
|
/// <summary>
|
|
/// 红利票息赔付金额(买方角度)
|
|
/// </summary>
|
|
public double CouponPaymentAmount { get; set; }
|
|
|
|
public double TotalAmount()
|
|
{
|
|
return CouponPaymentAmount + InterestAmount;
|
|
}
|
|
|
|
public override void InvertSign()
|
|
{
|
|
base.InvertSign();
|
|
|
|
CouponPaymentAmount = -CouponPaymentAmount;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球观察结果类型
|
|
/// </summary>
|
|
public enum SnowballObservationResultType
|
|
{
|
|
/// <summary>
|
|
/// 非观察日
|
|
/// </summary>
|
|
NonObservationDay,
|
|
|
|
/// <summary>
|
|
/// 观察中
|
|
/// </summary>
|
|
Monitoring,
|
|
|
|
/// <summary>
|
|
/// 敲入状态
|
|
/// </summary>
|
|
KnockedIn,
|
|
|
|
/// <summary>
|
|
/// 敲出赔付
|
|
/// </summary>
|
|
KoPayoff,
|
|
|
|
/// <summary>
|
|
/// 到期日敲入赔付
|
|
/// </summary>
|
|
KiPayoffAtEndDate,
|
|
|
|
/// <summary>
|
|
/// 到期日非敲入赔付
|
|
/// </summary>
|
|
NkiPayoffAtEndDate
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球观察结果
|
|
/// </summary>
|
|
public class SnowballObservationResult
|
|
{
|
|
/// <summary>
|
|
/// 观察结果类型
|
|
/// </summary>
|
|
public SnowballObservationResultType ResultType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 支付日期
|
|
/// </summary>
|
|
public DateTime PaymentDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 支付总金额(买方角度)
|
|
/// </summary>
|
|
public double PaymentAmount { get; set; }
|
|
|
|
/// <summary>
|
|
/// 敲出障碍价格
|
|
/// </summary>
|
|
public double KoBarrier { get; set; }
|
|
|
|
/// <summary>
|
|
/// 赔付明细
|
|
/// </summary>
|
|
public PrepaymentSnowballPayoff Payoff { get; set; }
|
|
}
|
|
}
|