Files
zszq-trs/YLErpDAL/Modules/DataProviderModule/VolatilityDataProvider.cs
T
2024-05-09 14:06:26 +08:00

69 lines
2.4 KiB
C#

using YLErp.Abstract;
using YLErp.Modules.CalculationModule.Abstract;
namespace YLErp.Modules.DataProviderModule
{
/// <summary>
/// 波动率数据提供
/// </summary>
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);
}
/// <summary>
/// 场内期权保存的波动率
/// </summary>
public double? GetExOptionSavedVol(string optionCode, DateTime valueDate)
{
return _ExOptionSavedVolProvider.GetSavedVol(optionCode, valueDate);
}
/// <summary>
/// 场外期权对冲波动率
/// </summary>
public double? GetOtcHedgingVol(int tradeId, DateTime valueDate)
{
return _OtcHedgingVolProvider.GetVol(tradeId, valueDate);
}
/// <summary>
/// 标的波动率
/// </summary>
public IVolatility GetUnderlyingVol(DateTime valueDate, string voltype, string contractCode, string userGroup)
{
return _UnderlyingVolProvider.GetVolatility(voltype, contractCode, userGroup);
}
/// <summary>
/// 场外期权结算波动率
/// </summary>
public double? GetOtcEodOverrideVol(int tradeId, DateTime valueDate)
{
return _OtcEodOverrideVolProvider.GetVol(tradeId, valueDate);
}
/// <summary>
/// 场外期权持仓波动率
/// </summary>
public IOtcTradeVolatility GetOtcPositionVol(int tradeId, DateTime valueDate)
{
return _OtcPositionVolProvider.GetVol(tradeId, valueDate);
}
}
}