105 lines
3.5 KiB
C#
105 lines
3.5 KiB
C#
using YLErp.Enums;
|
|
using YLErp.Modules.ApiModule.PricingModule;
|
|
using YLErp.Modules.ApiModule.PricingModule.CustomizedAsianPricing;
|
|
using YLErp.Modules.PricingModule;
|
|
|
|
namespace YLWebAPI.ApiModule.ManagerApi
|
|
{
|
|
/// <summary>
|
|
/// 交易定价API
|
|
/// </summary>
|
|
public class TradePricingController : BaseApiController
|
|
{
|
|
/// <summary>
|
|
/// 期权定价
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/optionPricing"), ManagerAuth]
|
|
public ApiResponseModel optionPricing2([FromBody] OptionPricingModelV1 reqModel)
|
|
{
|
|
if (reqModel == null)
|
|
{
|
|
return JsonError("参数为null");
|
|
}
|
|
|
|
var result = new PriceCalcService(CurUser).CalcOptionPrice(reqModel.Trades, reqModel.IsCalcMargin, CalcScenarioEnum.Pricing, td => reqModel.IsCalcGreeks);
|
|
|
|
return JsonSuccess(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 期权定价
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/otc-option/pricing"), ManagerAuth]
|
|
public ApiResponseModel OtcOptionPricing([FromBody] OptionPricingModelV2 req)
|
|
{
|
|
if (req is null)
|
|
{
|
|
return JsonError("参数不能为空");
|
|
}
|
|
|
|
var result = new OptionPricingApiService().GetOptionPrice(req);
|
|
|
|
return JsonSuccess(new
|
|
{
|
|
req.CalcId,
|
|
InitialMargin = result.initialMargin,
|
|
ContractSize = result.contractSize,
|
|
result.calcResult.Pv,
|
|
result.calcResult.Delta,
|
|
result.calcResult.Gamma,
|
|
result.calcResult.Vega,
|
|
result.calcResult.Theta,
|
|
result.calcResult.Rho
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保险加期货等奇异但不太常用的奇异期权定价,如各种亚式变种等
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/otc-option/customized_asian_pricing"), ManagerAuth]
|
|
public ApiResponseModel CustomizedAsianPricing([FromBody] CustomizedAsianPricingModel req)
|
|
{
|
|
if (req is null)
|
|
{
|
|
return JsonError("参数不能为空");
|
|
}
|
|
|
|
if (req.ExoticAsianType == "触碰锁定增强亚式期权") // 宏源恒利的保险加期货产品2022
|
|
{
|
|
var result = new OptionPricingApiService().GetCustomizedAsianOptionPrice(req);
|
|
|
|
return JsonSuccess(new
|
|
{
|
|
req.CalcId,
|
|
InitialMargin = result.initialMargin,
|
|
ContractSize = result.contractSize,
|
|
result.calcResult.Pv,
|
|
result.calcResult.Delta,
|
|
result.calcResult.Gamma,
|
|
result.calcResult.Vega,
|
|
result.calcResult.Theta,
|
|
result.calcResult.Rho
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return JsonError("不支持的期权类型");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 雪球期权反算票息
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/otc-option/snowball/calc_korebate"), ManagerAuth]
|
|
public ApiResponseModel CalcSnowballKoRebate([FromBody] OptionPricingModelV2 req)
|
|
{
|
|
OptionPricingApiHelper.CheckPricingRequestData(req);
|
|
|
|
req.TradeType = "雪球期权";
|
|
|
|
var korebate = new PriceCalcService(CurUser).CalcSnowballKORebate(req);
|
|
|
|
return JsonSuccess(korebate);
|
|
}
|
|
}
|
|
} |