using YLErp.Models; namespace YLErp.DBModels { public static class ConsTrade { public const string 确认成交 = "确认成交"; public const string 新增待确认 = "新增待确认"; public const string 修改待确认 = "修改待确认"; public const string 期初价格已确认 = "期初价格已确认"; public const string 未确认 = "未确认"; public const string 审批中 = "审批中"; public const string 已到期 = "已到期"; public const string 已执行 = "已执行"; public const string 已平仓 = "已平仓"; public const string 平仓待复核 = "平仓待复核"; public const string 提前终止拒绝 = "提前终止拒绝"; public const string 行权待复核 = "行权待复核"; public const string 互换待复核 = "互换待复核"; public static readonly string 已拒绝 = "已拒绝";//审批用 public static readonly string 已除权 = "已除权"; public static readonly string 已回退 = "已回退"; /// /// 数据表名称 /// public const string TableName = "trade"; /// /// 已完成的订单状态 已到期, 已执行, 已平仓,不允许再修改 /// public static readonly List TradeCompleteStatus = new List { 已到期, 已执行, 已平仓 }; public static readonly List AllTradeStatus = new List { 确认成交, 新增待确认, 修改待确认, 审批中, 已拒绝, 已执行, 已平仓, 已到期, 平仓待复核, 行权待复核, 互换待复核, 提前终止拒绝 }; //所有确认成交之后的状态 public static readonly List TradeStatusAfterConfirmed = new List { 确认成交, 已执行, 已平仓, 已到期, 平仓待复核, 行权待复核, 互换待复核, 提前终止拒绝 }; //所有确认成交之后的状态(不包含确认成交) public static readonly List TradeStatusAfterAndWithOutConfirmed = new List { 已执行, 已平仓, 已到期, 平仓待复核, 行权待复核, 互换待复核, 提前终止拒绝 }; /// /// Live trade state /// public static readonly List TradeStatusBeforConfirmed = new List { 新增待确认, 修改待确认, 审批中, 已拒绝 }; public static readonly List TradeStatusBeforConfirmedAndConfirmed = new List { 新增待确认, 修改待确认, 审批中, 已拒绝, 确认成交 }; public static readonly List LiveTradeStatusList = new List { 确认成交, 新增待确认, 修改待确认, 审批中, 平仓待复核, 提前终止拒绝, 行权待复核, 互换待复核 }; public static readonly List NeedMarginTradeStatusList = new List { 确认成交, 平仓待复核, 提前终止拒绝, 行权待复核, 互换待复核 }; public static readonly List TradeStatusList = new List { 新增待确认, 修改待确认, 确认成交, 已执行, 已到期, 已平仓 }; public static readonly List PositionTradeStatusList = new List() { 确认成交, 平仓待复核, 行权待复核, 互换待复核, 提前终止拒绝 }; public static readonly List BondTypeList = new List { "利率债", "信用债", "其它债券" }; /// /// 待确认状态 /// public static readonly List UnConfirmTradeStatusList = new List { 新增待确认, 修改待确认, 已拒绝 }; /// /// 光子并表状态 /// public static readonly List TradeStatusCustomexport = new List { 确认成交, 已执行, 已到期, 已平仓 }; //"彩虹期权", "价差期权", public static readonly IReadOnlyList AllTradeTypes = new List { "香草期权", "障碍期权", "二元期权", "亚式期权", "合成价差期权", "双鲨期权","Risky期权", "凤凰期权", "雪球期权","累计期权","区间累积期权","气囊结构","收益增强结构","自定义交易", "牛市价差", "熊市价差", "亚式熊市价差", "跨式组合", "宽跨式组合", "蝶式组合","风险逆转", "远期", "掉期", "收益互换", "现金流交易","场内期权","商品期货", "商品现货", "股票" }; //,"彩虹期权", "价差期权" public static readonly List TradeTypesForOtcOptions = new List { "香草期权", "障碍期权", "二元期权", "亚式期权","合成价差期权", "双鲨期权","Risky期权", "凤凰期权", "雪球期权","区间累积期权","气囊结构", "累计期权","收益增强结构","现金流交易","自定义交易" }; //"彩虹期权", "价差期权", public static readonly List OptionTradeTypeWithPricingModel = new List { "香草期权", "障碍期权", "二元期权", "亚式期权","合成价差期权", "双鲨期权","Risky期权", "凤凰期权", "雪球期权", "区间累积期权", "气囊结构", "收益增强结构","现金流交易" }; public static readonly List HasBarrierPriceOptions = new List { "障碍期权", "二元期权", "双鲨期权","凤凰期权", "雪球期权", "气囊结构", "累计期权"}; public static readonly List HasCouponOptions = new List { "障碍期权", "二元期权", "双鲨期权","凤凰期权", "雪球期权","区间累积期权","气囊结构","累计期权"}; public static readonly List HasMinusValueOptions = new List { "凤凰期权", "雪球期权", "自定义交易", "累计期权" }; public static readonly IReadOnlyList OptionTradeTypeUsed = OptionTradeTypeWithPricingModel.Where(n => n != "彩虹期权" && n != "价差期权").Concat(new[] { "自定义交易" }).ToList().AsReadOnly(); // OTC-4032 只保留XX期权和结构化交易 public static readonly List OptionTradeTypes = new List { "香草期权", "障碍期权", "二元期权", "亚式期权", "彩虹期权", "价差期权", "合成价差期权","Risky期权", "牛市价差", "熊市价差", "亚式熊市价差", "跨式组合", "宽跨式组合", "复制标的资产", "蝶式组合", "飞鹰式组合", "比例价差", "日历价差", "箱式价差", "风险逆转", "三领口组合", "双鲨期权", "区间累积期权", "凤凰期权", "雪球期权", "气囊结构","累计期权", "收益增强结构", "现金流交易", "自定义交易","结构化交易" }; //OTC-4042 组合交易类型 public static readonly List CombineOptionStructures = new List {"自由组合", "牛市价差", "熊市价差", "跨式组合", "宽跨式组合", "复制标的资产", "蝶式组合", "飞鹰式组合", "比例价差", "日历价差", "箱式价差", "风险逆转", "三领口组合" }; /// /// 对冲结构类型 /// public static readonly List TradeTypesForHedge = new List { "商品期货", "商品现货", "股票", "场内期权","信用债" }; /// /// 非期权结构类型(包括结构化交易) /// public static readonly List NonOptionTradeTypes = new List { "收益互换", "远期", "掉期", "结构化交易", "SWAP" }; //可以删除TradeCash的交易状态 public static readonly List CantDeleteTradeCash = new List { 确认成交, 已拒绝, 已执行, 已平仓, 已到期, 平仓待复核, 行权待复核, 互换待复核, 提前终止拒绝 }; /// /// 价差期权类型 /// public static readonly List SpreadPayoffTypes = new List { "S1-S2", "S1-S2-S3", "S1-S2-S3", "S1+S2-S3", "S1-S2-S3-S4", "S1+S2-S3-S4", "S1+S2+S3-S4" }; public static readonly List TradeTypesForStockRiskHedging = new List { "香草期权", "亚式期权", "商品期货", "股票", "信用债" }; public static readonly List BarrierTypes = new List { "上升敲入", "上升敲出", "下降敲入", "下降敲出", "双障碍敲入", "双障碍敲出" }; /// /// 互换利率端计息方式 /// public static readonly List InterestModels = new List() { (int)InterestModeEnum.固定值, (int)InterestModeEnum.合约名义本金规模, (int)InterestModeEnum.空头存续名义本金,(int)InterestModeEnum.多头存续名义本金, (int)InterestModeEnum.标的期初全价 }; /// /// 互换利率端计息方式-名义本金相关 /// public static readonly List InterestNotionalModels = new List() {(int)InterestModeEnum.合约名义本金规模, (int)InterestModeEnum.空头存续名义本金, (int)InterestModeEnum.多头存续名义本金, (int)InterestModeEnum.标的期初全价 }; /// /// 互换利率计息方式 预付金 /// public static readonly List InterestMarginModels = new List() { (int)InterestModeEnum.初始预付金, (int)InterestModeEnum.追加预付金}; #region----买入卖出BuySellType---- /// /// 买入卖出 /// public static class BuySellType { public const string Buy = "买入"; public const string Sell = "卖出"; //用于场内对冲交易买卖类型 public const string LongOpen = "多头开仓"; public const string LongClose = "多头平仓"; public const string ShortOpen = "空头开仓"; public const string ShortClose = "空头平仓"; public static IEnumerable GetSelectItems(bool forExchangeTrade = false) { if (forExchangeTrade) { return new[] { new SelectItem{ Value= LongOpen, Text= LongOpen }, new SelectItem{ Value= LongClose, Text= LongClose }, new SelectItem{ Value= ShortOpen, Text= ShortOpen }, new SelectItem{ Value= ShortClose, Text= ShortClose } }; } return new[] { new SelectItem{ Value= Sell, Text= Sell }, new SelectItem{ Value= Buy, Text= Buy } }; } } #endregion #region----开仓平仓OpenClose---- /// /// 开仓平仓 /// public static class OpenClose { public const string Open = "开仓"; public const string Close = "平仓"; public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= Open, Text= Open }, new SelectItem{ Value= Close, Text= Close } }; } } #endregion #region----多头空头LongShort---- /// /// 多头空头 /// public static class LongShort { public const string Long = "多头"; public const string Short = "空头"; public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= Long, Text= Long }, new SelectItem{ Value= Short, Text= Short } }; } } #endregion #region----看涨看跌OptionType---- /// /// 看涨看跌 /// public static class OptionType { public const string Call = "看涨"; public const string Put = "看跌"; public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= Call, Text= Call }, new SelectItem{ Value= Put, Text= Put } }; } } #endregion #region----行权方式ExerciseType---- /// /// 行权方式 /// public static class ExerciseType { public const string European = "European"; public const string American = "American"; public static string GetDesc(string type) { switch (type) { case American: return "美式"; case European: return "欧式"; default: return type ?? string.Empty; } } public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= European, Text= "欧式" }, new SelectItem{ Value= American, Text= "美式" } }; } } #endregion #region----敲入敲出状态KnockState---- /// /// 敲入敲出状态 /// public static class KnockState { public const string 观察中 = "观察中"; public const string Monitoring = "Monitoring"; public const string KnockedIn = "KnockedIn"; public const string KnockedOut = "KnockedOut"; public static string GetDesc(string type) { switch (type) { case KnockedIn: return "敲入"; case KnockedOut: return "敲出"; case Monitoring: return "观察中"; default: return type ?? ""; } } public static bool IsMonitoring(string type) { return type == Monitoring || type == 观察中; } public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= 观察中, Text= "观察中"}, new SelectItem{ Value= KnockedIn, Text= "敲入"}, new SelectItem{ Value= KnockedOut, Text= "敲出"} }; } } #endregion #region----亚式期权均价计算类型AsianAverageType---- /// /// 亚式期权均价计算类型 /// public static class AsianAverageType { public const string ArithmeticAverage = "ArithmeticAverage"; public const string GeometricAverage = "GeometricAverage"; public const string DiscreteArithmeticAverage = "DiscreteArithmeticAverage"; public const string EnhancedArithmeticAverage = "EnhancedArithmeticAverage"; public const string DiscreteGeometricAverage = "DiscreteGeometricAverage"; public static string GetDesc(string type) { switch (type) { case ArithmeticAverage: return "算术平均"; case GeometricAverage: return "几何平均"; case DiscreteArithmeticAverage: return "算术平均(离散)"; case EnhancedArithmeticAverage: return "增强算术平均"; case DiscreteGeometricAverage: return "几何平均(离散)"; default: return type ?? ""; } } public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= ArithmeticAverage, Text= "算术平均"}, new SelectItem{ Value= GeometricAverage, Text= "几何平均"}, new SelectItem{ Value= DiscreteArithmeticAverage, Text= "算术平均(离散)"}, new SelectItem{ Value= EnhancedArithmeticAverage, Text= "增强算术平均"}, }; } } #endregion #region----亚式期权行权价类型AsiaStrikeType---- /// /// 亚式期权行权价类型 /// public static class AsiaStrikeType { public const string Fixed = "Fixed"; public const string Floating = "Floating"; public const string Segmented = "Segmented"; public static string GetDesc(string type) { switch (type) { case Fixed: return "固定行权价"; case Floating: return "浮动行权价"; case Segmented: return "分段式"; default: return type ?? ""; } } public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= Fixed, Text= "固定行权价"}, new SelectItem{ Value= Floating, Text= "浮动行权价"}, new SelectItem{ Value= Segmented, Text= "分段式"} }; } } #endregion #region----补偿支付方式RebateType---- /// /// 补偿支付方式 /// public static class RebateType { public const string AtEnd = "AtEnd"; public const string AtHit = "AtHit"; public static string GetDesc(string type) { switch (type) { case AtEnd: return "递延"; case AtHit: return "立即"; default: return type ?? string.Empty; } } public static IEnumerable GetSelectItems() { return new[] { new SelectItem{ Value= AtEnd, Text= "递延" }, new SelectItem{ Value= AtHit, Text= "立即" } }; } } #endregion public static readonly List RainbowTypes = new List { "Max", "Min", "BestOfAssetsOrCash", "BestCashOrNothing", "WorstCashOrNothing", "TwoAssetsCashOrNothing", "TwoAssetsCashOrNothingUpDown", "TwoAssetsCashOrNothingDownUp" }; public static readonly List BinaryEuropeanPayoffTypes = new List { "CashOrNothing", "AssetOrNothing" }; public static readonly List BinaryAmericanPayoffTypes = new List { "UpOneTouch", "DownOneTouch", "UpNoTouch", "DownNoTouch", "DoubleOneTouch", "DoubleNoTouch" }; public static readonly List DiscreteTypes = new List { "离散", "连续" }; /// /// 默认情景分析参数 /// public static readonly List PriceRate = new List { -0.3, -0.2, -0.1, -0.05, 0, 0.05, 0.1, 0.2, 0.3 }; /// /// 默认情景分析参数 /// public static readonly List VolRate = new List { 0.20, 0.15, 0.10, 0.05, 0, -0.05, -0.10, -0.15, -0.20 }; /// /// 用户自定义结构的定价方式 /// public static readonly Dictionary UserDefinedPricingMethods = new Dictionary { { "无", UserDefinedPricingMethod.None.ToString() }, { "通用蒙特卡洛", UserDefinedPricingMethod.GenericMonteCarlo.ToString() }, { "外部计算服务", UserDefinedPricingMethod.ExternalService.ToString() } }; public static readonly List PriceDistributions = new List { "LogNormal" }; public static readonly List UserDefinedFieldTypes = GenerateSelectListFromEnum(typeof(OptionFieldType)); /// /// 非默认的定价模型名称映射关系 /// public static string GetEngineName(string engineName) { switch (engineName) { case "二叉树": case "BinomialTreeAmericanEngine": return "BinomialTreeAmericanEngine"; case "蒙特卡洛": case "GbmMonteCarloEngine": return "GbmMonteCarloEngine"; default: return null; } } private static List GenerateSelectListFromEnum(Type enumType) { return Enum.GetNames(enumType).ToList(); } } }