using YLErp.Abstract; using YLErp.Modules.CalculationModule.Abstract; namespace YLErp.Modules.DataProviderModule { /// /// 波动率数据提供 /// public class VolatilityDataProvider : IVolatilityDataProvider { readonly UnderlyingVolProvider _UnderlyingVolProvider; readonly OtcPositionVolProvider _OtcPositionVolProvider; readonly OtcHedgingVolProvider _OtcHedgingVolProvider; readonly OtcEodOverrideVolProvider _OtcEodOverrideVolProvider; readonly ExOptionSavedVolProvider _ExOptionSavedVolProvider; public VolatilityDataProvider(DateTime valueDate) { _UnderlyingVolProvider = new UnderlyingVolProvider(valueDate); _OtcPositionVolProvider = new OtcPositionVolProvider(valueDate); _OtcHedgingVolProvider = new OtcHedgingVolProvider(valueDate); _OtcEodOverrideVolProvider = new OtcEodOverrideVolProvider(valueDate); _ExOptionSavedVolProvider = new ExOptionSavedVolProvider(valueDate); } /// /// 场内期权保存的波动率 /// public double? GetExOptionSavedVol(string optionCode, DateTime valueDate) { return _ExOptionSavedVolProvider.GetSavedVol(optionCode, valueDate); } /// /// 场外期权对冲波动率 /// public double? GetOtcHedgingVol(int tradeId, DateTime valueDate) { return _OtcHedgingVolProvider.GetVol(tradeId, valueDate); } /// /// 标的波动率 /// public IVolatility GetUnderlyingVol(DateTime valueDate, string voltype, string contractCode, string userGroup) { return _UnderlyingVolProvider.GetVolatility(voltype, contractCode, userGroup); } /// /// 场外期权结算波动率 /// public double? GetOtcEodOverrideVol(int tradeId, DateTime valueDate) { return _OtcEodOverrideVolProvider.GetVol(tradeId, valueDate); } /// /// 场外期权持仓波动率 /// public IOtcTradeVolatility GetOtcPositionVol(int tradeId, DateTime valueDate) { return _OtcPositionVolProvider.GetVol(tradeId, valueDate); } } }