201 lines
6.2 KiB
C#
201 lines
6.2 KiB
C#
using Qdp.Pricing.Base.Utilities;
|
|
using YLErp.Configuration;
|
|
using YLErp.Modules.SystemModule;
|
|
|
|
namespace YLErp.Web.Models
|
|
{
|
|
/// <summary>
|
|
/// 组合报价视图模型
|
|
/// </summary>
|
|
public class PricingModel : BasicViewModel
|
|
{
|
|
/// <summary>
|
|
/// 是否导入
|
|
/// </summary>
|
|
public bool IsImport { get; set; }
|
|
|
|
/// <summary>
|
|
/// 定价数据
|
|
/// </summary>
|
|
public OtcOptionTradeFull Trade { get; set; }
|
|
|
|
/// <summary>
|
|
/// 系统日期
|
|
/// </summary>
|
|
public string SysDate { get; }
|
|
|
|
/// <summary>
|
|
/// 公司枚举
|
|
/// </summary>
|
|
public string Company { get; }
|
|
|
|
/// <summary>
|
|
/// 公司名称
|
|
/// </summary>
|
|
public string CompanyName { get; }
|
|
|
|
/// <summary>
|
|
/// 公司简称
|
|
/// </summary>
|
|
public string AbstractCompanyName { get; }
|
|
|
|
/// <summary>
|
|
/// 是否国君
|
|
/// </summary>
|
|
public bool IsGuoJun { get; }
|
|
|
|
/// <summary>
|
|
/// 是否pv四舍五入
|
|
/// </summary>
|
|
public bool IsPvRounded { get; }
|
|
|
|
/// <summary>
|
|
/// 是否交易波动率
|
|
/// </summary>
|
|
public bool IsTradeVol { get; }
|
|
|
|
/// <summary>
|
|
/// 是否更精确的波动率
|
|
/// </summary>
|
|
public bool VolMoreAccurate { get; }
|
|
|
|
/// <summary>
|
|
/// 是否精确模式
|
|
/// </summary>
|
|
public bool PrecisionOfMinuteInQuote { get; }
|
|
|
|
/// <summary>
|
|
/// 是否skew模式的波动率
|
|
/// </summary>
|
|
public bool SkewMapVol { get; }
|
|
|
|
/// <summary>
|
|
/// 是否获取目标波动率
|
|
/// </summary>
|
|
public bool GetTradeCloseVol { get; }
|
|
|
|
/// <summary>
|
|
/// 是否有权限选择交易员
|
|
/// </summary>
|
|
public bool CanSelectTrader { get; }
|
|
|
|
/// <summary>
|
|
/// 股票优先
|
|
/// </summary>
|
|
public bool StockFirst { get; }
|
|
|
|
/// <summary>
|
|
/// 定价计算时是否需要选择客户
|
|
/// </summary>
|
|
public bool ClientUsedForCalc { get; }
|
|
|
|
/// <summary>
|
|
/// 是否对冲下单
|
|
/// </summary>
|
|
public bool HedgingOrder { get; }
|
|
|
|
/// <summary>
|
|
/// 是否交易员
|
|
/// </summary>
|
|
public bool IsTrader { get; }
|
|
|
|
/// <summary>
|
|
/// 是否显示初始预付金
|
|
/// </summary>
|
|
public bool ShowInitialMargin { get; }
|
|
|
|
/// <summary>
|
|
/// 双向预付金
|
|
/// </summary>
|
|
public bool TwoSideMargin { get; }
|
|
|
|
/// <summary>
|
|
/// 是否计算预付金
|
|
/// </summary>
|
|
public bool CalcMargin { get; }
|
|
|
|
/// <summary>
|
|
/// 简易模式
|
|
/// </summary>
|
|
public bool SimpleMode { get; }
|
|
|
|
/// <summary>
|
|
/// QDP日历年天数
|
|
/// </summary>
|
|
public int DaysInYear { get; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string BinaryCalculation { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易编号必须大写
|
|
/// </summary>
|
|
public bool UpperTradeNumber { get; set; }
|
|
|
|
/// <summary>
|
|
/// 组合报价是否计算凤凰/雪球期权风险值
|
|
/// </summary>
|
|
public bool CalcAutocallGreeks { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否证券模式
|
|
/// </summary>
|
|
public bool SecuritiesEnvironment => PS.Config.ErpElement.SecuritiesEnvironment;
|
|
|
|
/// <summary>
|
|
/// 目标波动率配置
|
|
/// </summary>
|
|
public string TradeCloseVolatilityCfg { get; }
|
|
|
|
/// <summary>
|
|
/// 平滑过渡天数配置
|
|
/// </summary>
|
|
public string NumOfSmoothingDaysCfg { get; }
|
|
/// <summary>
|
|
/// 远期到期类型配置
|
|
/// </summary>
|
|
public string ForwardPriceTypeCfg { get; }
|
|
|
|
public PricingModel(UserInfo userInfo, bool isTrader) : base(userInfo)
|
|
{
|
|
SysDate = valuedateBLL.ValueDate.ToString("yyyy-MM-dd");
|
|
Company = PS.Config.Company.ToString();
|
|
CompanyName = PS.Config.CompanyShortName.TrimToNull() ?? PS.Config.Company.ToString();
|
|
AbstractCompanyName = PS.Config.CompanyName ?? string.Empty;
|
|
IsGuoJun = PS.Config.Company == CompanyEnum.国泰君安;
|
|
IsPvRounded = PS.Config.IsPVRounded;
|
|
IsTradeVol = PS.Config.IsTradeVol;
|
|
ShowInitialMargin = valuedateBLL.SystemDate.CanSetInitialMargin;
|
|
//是否使用更加精确的波动率
|
|
VolMoreAccurate = PS.Config.ErpElement.VolMoreAccurate;
|
|
PrecisionOfMinuteInQuote = PS.Config.ErpElement.PrecisionOfMinuteInQuote;
|
|
SkewMapVol = PS.Config.ErpElement.SkewMapVolConstruction;
|
|
GetTradeCloseVol = true;
|
|
CanSelectTrader = userInfo.交易管理_新增选择交易员;
|
|
StockFirst = AppHelper.OtcConfig.StockFirst;
|
|
ClientUsedForCalc = AppHelper.OtcConfig.ClientUsedForCalc;
|
|
HedgingOrder = (AppHelper.OtcConfig.HedgingOrder & 1) == 1;
|
|
TwoSideMargin = PS.Config.ErpElement.TwoSideMargin;
|
|
IsTrader = isTrader;
|
|
|
|
// 前端会JS直接覆盖成365,这里的赋值暂时没用
|
|
DaysInYear = 365;
|
|
|
|
//个性化设置
|
|
var config = new SysUserConfigService(userInfo).GetConfigData<OtcWebUserConfig>(Server.CacheProvider);
|
|
SimpleMode = config?.Pricing_SimpleMode ?? true;
|
|
CalcMargin = config?.Pricing_CalcMargin ?? false;
|
|
CalcAutocallGreeks = config?.Pricing_CalcAutocallGreeks ?? false;
|
|
|
|
BinaryCalculation = valuedateBLL.BinaryCalculation;
|
|
UpperTradeNumber = PS.Config.ErpElement.UpperTradeNumber;
|
|
|
|
var nv = YieldChain.Helpers.UrlHelper.ParseQueryString(PS.Config.ErpElement.TradePricingCfg);
|
|
TradeCloseVolatilityCfg = nv?["目标波动率"].TrimToNull() ?? "Mid";
|
|
NumOfSmoothingDaysCfg = nv?["平滑过渡天数"].TrimToNull() ?? "NONE";
|
|
ForwardPriceTypeCfg = nv?["远期期初价类型"].TrimToNull() ?? "期权行权价格";
|
|
}
|
|
}
|
|
} |