Files
zszq-trs/YLErpDAL/Model/Trade_StructureOption.cs
T
2024-05-09 14:06:26 +08:00

209 lines
12 KiB
C#

using YLErp.Models;
namespace YLErp.Model
{
public class Trade_StructureOption
{
public int? TraderId { get; set; }
public int? AssetId { get; set; }
public int? ClientId { get; set; }
/// <summary>
/// 标的品种名
/// </summary>
public string VarietyName { get; set; }
public int? VarietyId { get; set; }
/// <summary>
/// 系统和用户
/// </summary>
public string UnderlyingPriceType { get; set; }
/// <summary>
/// 交易数量
/// </summary>
public double? TradeAmount { get; set; }
public string UnderlyingInstrumentType { get; set; }
/// <summary>
/// 行权方式
/// </summary>
public string ExerciseMode { get; set; }
/// <summary>
/// 收益结算
/// </summary>
public int SettlementType { get; set; }
public int id { get; set; }
public string Name { get; set; }
public string CnName { get; set; }
public List<trade> trades { get; set; }
public int UnderlyingId { get; set; }
public string UnderlyingCode { get; set; }
public string BuySell { get; set; }
public string OptionType { get; set; }
public double Notional { get; set; }
public double Notional2 { get; set; }
//UnderlyingInstrumentType: "CommodityFutures"
public DateTime? ExerciseDate { get; set; }
public DateTime? ExerciseDate2 { get; set; }
public double? SpotPrice { get; set; }
public double? Strike { get; set; }
public double? Strike2 { get; set; }
public double? Strike3 { get; set; }
public double? Strike4 { get; set; }
/// <summary>
/// 中间行权价
/// </summary>
public double? MidStrike { get; set; }
/// <summary>
/// 行权价间距
/// </summary>
public double? StrikeGap { get; set; }
public string SeagullType { get; set; }
public DateTime? MaturityDate { get; set; }
/// <summary>
/// 交易日期
/// </summary>
public DateTime TradeDate { get; set; }
public double? PremiumRate { get; set; }
public double? Premium { get; set; }
public double InitialMarginRatio { get; set; }
public double InitialMarginRatioPercent { get; set; }
public double PositionMarginRatio { get; set; }
public double PositionMarginRatioPercent { get; set; }
public Variety Variety { get; set; }
/// <summary>
/// 均价起算日
/// </summary>
public DateTime? AveragingPeriodStartDate { get; set; }
/// <summary>
/// 行权价类型
/// </summary>
public string StrikeType { get; set; }
/// <summary>
/// 亚式期权类型
/// </summary>
public string PayoffType { get; set; }
}
/// <summary>
/// 组合策略
/// </summary>
public static class StructureOption_Code
{
public static readonly List<string> SeagullTypes = new List<string> { "Bullish", "Bearish" };
public static readonly List<Trade_StructureOption> StructureOptions;
public static readonly List<SelectItem> StructureOptionsCn;
static StructureOption_Code()
{
StructureOptions = new List<Trade_StructureOption>();
Trade_StructureOption BullSpread = new Trade_StructureOption() { BuySell = "卖出", CnName = "牛市价差", Name = "Bull Spread", OptionType = "看涨", Notional = 1 };
trade BullSpread1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade BullSpread2 = new trade() {/* UnderlyingInstrumentType = "CommodityFutures",*/ TradeType = "香草期权", ExerciseMode = "European" };
BullSpread.trades = new List<trade> { BullSpread1, BullSpread2 };
StructureOptions.Add(BullSpread);
Trade_StructureOption BearSpread = new Trade_StructureOption() { CnName = "熊市价差", BuySell = "卖出", Name = "Bear Spread", OptionType = "看涨", Notional = 1 };
trade BearSpread1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade BearSpread2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
BearSpread.trades = new List<trade> { BearSpread1, BearSpread2 };
StructureOptions.Add(BearSpread);
Trade_StructureOption AsianBearSpread = new Trade_StructureOption() { CnName = "亚式熊市价差", BuySell = "卖出", Name = "Asian Bear Spread", OptionType = "看涨", Notional = 1 };
trade AsianBearSpread1 = new trade() { TradeType = "亚式期权", ExerciseMode = "European" };
trade AsianBearSpread2 = new trade() { TradeType = "亚式期权", ExerciseMode = "European" };
AsianBearSpread.trades = new List<trade> { AsianBearSpread1, AsianBearSpread2 };
StructureOptions.Add(AsianBearSpread);
Trade_StructureOption Straddle = new Trade_StructureOption() { CnName = "跨式组合", BuySell = "买入", Name = "Straddle", Notional = 1 };
trade Straddle1 = new trade() { OptionType = "看涨", TradeType = "香草期权", ExerciseMode = "European" };
trade Straddle2 = new trade() { OptionType = "看跌", TradeType = "香草期权", ExerciseMode = "European" };
Straddle.trades = new List<trade> { Straddle1, Straddle2 };
StructureOptions.Add(Straddle);
Trade_StructureOption Strangle = new Trade_StructureOption() { CnName = "宽跨式组合", BuySell = "买入", Name = "Strangle", Notional = 1 };
trade Strangle1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Strangle2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
Strangle.trades = new List<trade> { Strangle1, Strangle2 };
StructureOptions.Add(Strangle);
Trade_StructureOption Preplicating = new Trade_StructureOption() { CnName = "复制标的资产", BuySell = "买入", Name = "Preplicating Underlying", Notional = 1 };
trade Preplicating1 = new trade() { OptionType = "看涨", TradeType = "香草期权", ExerciseMode = "European" };
trade Preplicating2 = new trade() { OptionType = "看跌", TradeType = "香草期权", ExerciseMode = "European" };
Preplicating.trades = new List<trade> { Preplicating1, Preplicating2 };
StructureOptions.Add(Preplicating);
Trade_StructureOption Butterfly = new Trade_StructureOption() { CnName = "蝶式组合", OptionType = "看涨", BuySell = "买入", Name = "Butterfly", Notional = 1 };
trade Butterfly1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Butterfly2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Butterfly3 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
Butterfly.trades = new List<trade> { Butterfly1, Butterfly2, Butterfly3 };
StructureOptions.Add(Butterfly);
Trade_StructureOption Condor = new Trade_StructureOption() { CnName = "飞鹰式组合", OptionType = "看涨", BuySell = "买入", Name = "Condor", Notional = 1 };
trade Condor1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Condor2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Condor3 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade Condor4 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
Condor.trades = new List<trade> { Condor1, Condor2, Condor3, Condor4 };
StructureOptions.Add(Condor);
Trade_StructureOption RatioSpread = new Trade_StructureOption() { CnName = "比例价差", OptionType = "看涨", BuySell = "买入", Name = "Ratio Spread", Notional = 1, Notional2 = 1 };
trade RatioSpread1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade RatioSpread2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
RatioSpread.trades = new List<trade> { RatioSpread1, RatioSpread2 };
StructureOptions.Add(RatioSpread);
Trade_StructureOption CalenderSpread = new Trade_StructureOption() { CnName = "日历价差", OptionType = "看涨", BuySell = "买入", Name = "Calender Spread", Notional = 1 };
trade CalenderSpread1 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
trade CalenderSpread2 = new trade() { TradeType = "香草期权", ExerciseMode = "European" };
CalenderSpread.trades = new List<trade> { CalenderSpread1, CalenderSpread2 };
StructureOptions.Add(CalenderSpread);
Trade_StructureOption BoxSpread = new Trade_StructureOption() { CnName = "箱式价差", BuySell = "买入", Name = "Box Spread", Notional = 1 };
trade BoxSpread1 = new trade() { OptionType = "看涨", BuySell = "买入", TradeType = "香草期权", ExerciseMode = "European" };
trade BoxSpread2 = new trade() { OptionType = "看跌", BuySell = "卖出", TradeType = "香草期权", ExerciseMode = "European" };
trade BoxSpread3 = new trade() { OptionType = "看跌", BuySell = "买入", TradeType = "香草期权", ExerciseMode = "European" };
trade BoxSpread4 = new trade() { OptionType = "看涨", BuySell = "卖出", TradeType = "香草期权", ExerciseMode = "European" };
BoxSpread.trades = new List<trade> { BoxSpread1, BoxSpread2, BoxSpread3, BoxSpread4 };
StructureOptions.Add(BoxSpread);
Trade_StructureOption RiskReversal = new Trade_StructureOption() { CnName = "风险逆转", OptionType = "看涨", BuySell = "买入", Name = "Risk Reversal", Notional = 1 };
trade RiskReversal1 = new trade() { OptionType = "看涨", BuySell = "买入", TradeType = "香草期权", ExerciseMode = "European" };
trade RiskReversal2 = new trade() { OptionType = "看跌", BuySell = "卖出", TradeType = "香草期权", ExerciseMode = "European" };
RiskReversal.trades = new List<trade> { RiskReversal1, RiskReversal2 };
StructureOptions.Add(RiskReversal);
//由海鸥式组合改为三领口
Trade_StructureOption Collar = new Trade_StructureOption() { CnName = "三领口组合", OptionType = "看涨", BuySell = "买入", Name = "Collar", Notional = 1, SeagullType = "Bullish" };
trade Seagull1 = new trade() { OptionType = "看涨", BuySell = "卖出", TradeType = "香草期权", ExerciseMode = "European" };
trade Seagull2 = new trade() { OptionType = "看跌", BuySell = "买入", TradeType = "香草期权", ExerciseMode = "European" };
trade Seagull3 = new trade() { OptionType = "看跌", BuySell = "卖出", TradeType = "香草期权", ExerciseMode = "European" };
Collar.trades = new List<trade> { Seagull1, Seagull2, Seagull3 };
StructureOptions.Add(Collar);
foreach (var item in StructureOptions)
{
item.UnderlyingInstrumentType = "商品期货";
}
//初始化 StructureOptions
//组合报价页排除掉亚式熊式价差期权
StructureOptionsCn = StructureOptions
.Where(s => s.Name != "Asian Bear Spread")
.Select(s => new SelectItem { Text = s.CnName, Value = s.Name })
.ToList();
}
}
}