using Qdp.Pricing.Base.Implementations;
using YLErp.Abstract;
using YLErp.Commons;
using YLErp.Enums;
using YLErp.QdpModule;
namespace YLErp.Modules.CalculationModule.Abstract
{
///
/// 场外交易估值计算上下文接口
///
public interface IOtcTradeValueCalcContext : IDisposable
{
///
/// 计算场景枚举
///
CalcScenarioEnum CalcScenario { get; }
///
/// 用户组
///
string UserGroup { get; set; }
///
/// 估值日期
///
DateTime ValueDate { get; }
///
/// 波动率类型
///
string VolType { get; }
bool IsEodCalc { get; }
///
/// 系统全局无风险利率
///
double SysRiskFreeRate { get; }
///
/// 是否精确时间模式
///
bool IsPreciseTimeMode { get; }
///
/// 增加波动率比率
///
double AddingVolRate { get; }
///
/// QDP市场代理
///
MarketProxy MarketProxy { get; }
///
/// 数据提供者(接口实现中不能为null)
///
IOptionCalcDataProvider DataProvider { get; }
///
/// 错误处理接口
///
IErrorHandler ErrorHandler { get; }
///
/// 是否计算T+1日Delta
///
bool CalcDeltaT1 { get; }
///
/// 追踪
///
TraceWrap Trace { get; }
//----------------------------------------
//方法
//----------------------------------------
///
/// 根据交易品种ID获取此交易品种是否存在夜盘
///
bool HasNightMarket(int varietyId);
///
/// 获取标的关联性
///
double GetCorrelation(int underlyingId1, int underlyingId2);
///
/// 为计算准备波动率
///
bool PrepareVolatility(string qdpTradeId, OtcTradeBase trade, double spotPrice, out string[] volsurfaceNames);
///
/// 获取交易的无风险利率
///
double GetRiskFreeRate(OtcTradeBase trade);
///
/// 获取交易的分红率
///
double GetDividendRate(OtcTradeBase trade);
///
/// 获取期权计算模式
///
PricingRequest GetPricingRequest(OtcTradeBase trade);
///
/// 为亚式期权交易获取fixing数据
///
string GetFixingString(OtcTradeBase trade, trade_asian_option asianOption, double spotPrice);
}
}