69 lines
2.4 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|