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

864 lines
30 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using BaseOUDAL;
using Newtonsoft.Json;
namespace YLErp.Modules.EodModule.SettlementModule
{
public class FangDunSettlementServiceModel
{
}
public class HandleTrade
{
public trade tradeModel { get; set; }
public trade_asian_option trade_Asian_Option { get; set; }
/// <summary>
/// 合约编号 (交易编码)
/// </summary>
public string ordid { get; set; }
/// <summary>
/// 账户组 (期货子公司固定使用 10038801)
/// </summary>
public string groupid { get; set; }
/// <summary>
/// 子期权编号 (单腿编号)
/// </summary>
public string sub_ordid { get; set; }
/// <summary>
/// 生效起始日 (effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public DateTime? effective_date_from
{
get; set;
}
/// <summary>
/// 生效截止日(effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public DateTime? effective_date_to
{
get; set;
}
/// <summary>
/// SAC编号(客户编号)
/// </summary>
public string sac_ordid
{
get { return GetClientInfo(ClientId).Number; }
}
/// <summary>
/// 合约名称(标的合约-Call/Put-到期日M-执行价K-亚式期权观察起始日OB 只有亚式期权为例子1,其余都为例子2 例1C2203-Put-0117M-2692K-1217OB 例2AU9999-Put-0321M-406K)
/// </summary>
public string ordname { get; set; }
/// <summary>
/// 合约类型区分(VNL 普通期权 BRR 障碍期权 ACL 多触碰点障碍期权 ASN 亚式期权 ESA 增强亚式期权 DGT 二元期权 STG 组合期权 PHX 凤凰期权 BIB 二元障碍期权 SNB 雪球期权 TRN 一触即发期权 UNK 未知类型 RAL 区间累计期权)
/// </summary>
public string contract_type_cls { get; set; }
/// <summary>
/// 多空区分(L 多头 S 空头)
/// </summary>
public string long_short_position_cls { get; set; }
/// <summary>
/// PUTCALL区分 看涨看跌 P 认沽 看跌 C 认购 看涨
/// </summary>
public string put_call_cls { get; set; }
/// <summary>
/// 结算方式区分 固定为现金C
/// </summary>
public string settlement_type_cls { get; set; }
/// <summary>
/// 行权类型区分 (1 欧式 2 美式)
/// </summary>
public string exercise_type_cls { get; set; }
/// <summary>
/// 合约行权价格(执行价格)
/// </summary>
public double? strike_price { get; set; }
/// <summary>
/// 合约结算币种 (固定为CNY)
/// </summary>
public string settlement_currency { get; set; }
/// <summary>
/// 合约计价币种 (固定为CNY)
/// </summary>
public string pricing_currency { get; set; }
/// <summary>
/// 合约开始日期(effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public DateTime? start_date
{
get; set;
}
/// <summary>
/// 合约到期日期(到期日期)
/// </summary>
public DateTime? maturity_date
{
get; set;
}
/// <summary>
/// 期权费(成交金额)
/// </summary>
public double? premium_amt { get; set; }
/// <summary>
/// 期权费支付日 (权利金应付日)
/// </summary>
public DateTime? premium_date
{
get; set;
}
/// <summary>
/// 参与率
/// </summary>
public double? participation_rate { get; set; }
/// <summary>
/// Rate2 (默认为0)
/// </summary>
public double levelpercentage { get; set; }
/// <summary>
/// 交易日历区分 (默认是1)
/// </summary>
public string calendar_type_cls { get; set; }
/// <summary>
/// 交易对手名称 (客户名称)
/// </summary>
public string counterparty_name { get; set; }
/// <summary>
/// 交易对手SAC编号(SAC主协议编号)
/// </summary>
public string counterparty_sac_ordid
{
get { return GetClientInfo(ClientId).MainProtocolCode; }
}
/// <summary>
/// 交易日变更规则区分(默认为:1 后移 Following)
/// </summary>
public string businessday_convention_cls { get; set; }
/// <summary>
/// 交易日变更规则区分(默认为:1 后移 Following)
/// </summary>
public string calcrules_cls { get; set; }
/// <summary>
/// 交易日计息规则区分 (默认为:4 工作日/240)
/// </summary>
public string single_multi_cls { get; set; }
/// <summary>
/// 标的权重计算区分 ( 固定为1 )
/// </summary>
public string weight_calc_cls { get; set; }
/// <summary>
/// 产品类型说明 ( 结构类型:普通期权、奇异期权 )
/// </summary>
public string additionalproduct_type { get; set; }
/// <summary>
/// 合约贴现率 (分红率 默认为,risk free rate)
/// </summary>
public double? dis_rate { get; set; }
/// <summary>
/// 标的证券代码 (标的代码(不带市场后缀))
/// </summary>
public string underlying_stkcode { get; set; }
/// <summary>
/// 标的财汇交易市场 (根据交易市场在参考sheet区)
/// </summary>
public string underlying_caihua_trade_market { get { return GetUnderlyingCaihuaTradeMarketByVarietyId(UnderlyingCode); } }
/// <summary>
/// 财华证券类别区分0 (默认为:5.期货)
/// </summary>
public string caihua_setype0_cls { get; set; }
/// <summary>
/// 初始标的价格 (期初标的价格)
/// </summary>
public double? initial_spot { get; set; }
/// <summary>
/// 权重 (默认值等于1)
/// </summary>
public double? weight_rate { get; set; }
/// <summary>
/// 标的红利率 (分红率默认为dis_rate)
/// </summary>
public double? div_rate { get; set; }
/// <summary>
/// 标的波动率 (持仓波动率)
/// </summary>
public double? vol_rate { get; set; }
/// <summary>
/// 融资率 (分红率默认为dis_rate)
/// </summary>
public double? fund_rate { get; set; }
/// <summary>
/// 障碍类型区分 ("DownIn 下限敲入 UpIn 上限敲入 DownOut 下限敲出 UpOut 上限敲出")
/// </summary>
public string barrier_type_cls { get { return GetBarrierType(barrierType); } }
/// <summary>
/// 障碍值 (障碍价格(仅限单障碍的情形))
/// </summary>
public double? barrier_value { get; set; }
/// <summary>
/// 补偿率 (补偿金额(仅限单障碍的情形))
/// </summary>
public double? rebate_rate { get; set; }
/// <summary>
/// 敲出价格 (敲出障碍价格)
/// </summary>
public double? knockout_price { get { return GetKIBarrier(IsMoneynessOption, KOBarrier, initial_spot); } }
/// <summary>
/// 敲入价格 (敲入障碍价格)
/// </summary>
public double? knockin_price { get { return GetKIBarrier(IsMoneynessOption, KIBarrier, initial_spot); } }
/// <summary>
/// 息票率 (票息率)
/// </summary>
public double? coupon_rate { get; set; }
/// <summary>
/// 观察日期LIST (观察日期列表(需要列出具体日期及其对应的价格))
/// </summary>
public string observationdate_list { get; set; }
/// <summary>
/// 观察开始日期 (观察日首日)
/// </summary>
public string observe_start_date
{
get
{
if (!string.IsNullOrWhiteSpace(observationdate_list))
{
return GetObservationDateByObservationDateStr(observationdate_list).s.ToString("yyyyMMdd");
}
return null;
}
}
/// <summary>
/// 观察结束日期 (观察日尾日)
/// </summary>
public string observe_end_date
{
get
{
if (!string.IsNullOrWhiteSpace(observationdate_list))
{
return GetObservationDateByObservationDateStr(observationdate_list).e.ToString("yyyyMMdd");
}
return null;
}
}
/// <summary>
/// 观察频率(观察频率:每日\每月)
/// </summary>
public string obsfreq { get; set; }
/// <summary>
/// 算数几何平均区分(根据亚式均价计算方式选择)
/// </summary>
public string avg_type_cls { get { return GetPayoffType(PayoffType); } }
/// <summary>
/// 连续离散平均区分(根据亚式均价计算方式选择)
/// </summary>
public string discrete_type_cls { get { return GetPayoffType(PayoffType); } }
/// <summary>
/// 剩余名义本金(持仓名义本金)
/// </summary>
public double? notional { get; set; }
/// <summary>
/// 预付金 (持仓预付金)
/// </summary>
public double? margin { get; set; }
/// <summary>
/// 亚式期权累积观察标的价格 (亚式均价)
/// </summary>
public double? accu_underlying_price_asian { get; set; }
/// <summary>
/// 亚式期权累计观察日计数 (亚式期权均价当前观察日个数)
/// </summary>
public double accu_past_count_asian { get; set; }
/// <summary>
/// 浮动盈亏 (浮动盈亏)
/// </summary>
public double? float_profit_loss { get; set; }
/// <summary>
/// 实现盈亏 (实现盈亏)
/// </summary>
public double? accu_profit_loss { get; set; }
/// <summary>
/// NPV (pv)
/// </summary>
public double? npv { get; set; }
/// <summary>
/// Delta (delta)
/// </summary>
public double delta { get; set; }
/// <summary>
/// Gamma (gamma)
/// </summary>
public double? gamma { get; set; }
/// <summary>
/// Theta (theta)
/// </summary>
public double? theta { get; set; }
/// <summary>
/// Vega (vega)
/// </summary>
public double? vega { get; set; }
/// <summary>
/// Rho (Rho)
/// </summary>
public double? rho { get; set; }
/// <summary>
/// 结算日期
/// </summary>
public string settle_date { get; set; }
/// <summary>
/// 标的品种,如玉米2205合约:C2205记为C
/// </summary>
public string product_code
{
get
{
if (!string.IsNullOrWhiteSpace(UnderlyingCode))
{
return DataCacheProvider.GetVariety(UnderlyingCode).VarietyCode;
}
return "";
}
}
/// <summary>
/// 名义数量按期货合约报价单位记录(份额),如鸡蛋按照500kg
/// </summary>
public double? volume { get; set; }
/// <summary>
/// delta金额
/// </summary>
public double cashdelta { get; set; }
/// <summary>
/// 权利金单价
/// </summary>
public double? current_value { get; set; }
/// <summary>
/// 成交金额
/// </summary>
public double? market_value { get; set; }
/// <summary>
/// 当日盈亏
/// </summary>
public double? pnl { get; set; }
/// <summary>
/// 单腿期权:cashdelta*21.68%+vega*10%
/// 多腿期权:多腿轧差后的cashdelta*21.68%+vega*10%
/// </summary>
public double? stress_test_value { get; set; }
/// <summary>
/// 与volume一致
/// </summary>
public double? underlying_stk_qty { get; set; }
public string UnderlyingCode { get; set; }
/// <summary>
/// 合约乘数
/// </summary>
public double? underlying_multiplier
{
get
{
if (!string.IsNullOrWhiteSpace(UnderlyingCode))
{
return DataCacheProvider.GetUnderlyingDataSource().GetData(UnderlyingCode)?.ContractSize;
}
return 0;
}
}
/// <summary>
/// 权利金单价,与current_value一致
/// </summary>
public double? underlying_royalty_price { get; set; }
public string IsMoneynessOption { get; set; }
public int ClientId { get; internal set; }
public string barrierType { get; internal set; }
public double? KOBarrier { get; internal set; }
public double? KIBarrier { get; internal set; }
public string PayoffType { get; internal set; }
public int? effective_date_fromToInt
{
get; set;
}
public int? effective_date_toToInt
{
get; set;
}
public int? start_dateToInt
{
get; set;
}
public int? maturity_dateToInt
{
get; set;
}
public int? premium_dateToInt
{
get; set;
}
public string TradeType { get; internal set; }
public int TraderId { get; internal set; }
/// <summary>
/// 获取观察日列表
/// </summary>
/// <param name="ObservationDateStr"></param>
/// <returns></returns>
public (DateTime s, DateTime e) GetObservationDateByObservationDateStr(string ObservationDateStr)
{
var list = JsonConvert.DeserializeObject<List<ObservationDate>>(ObservationDateStr);
var startDate = list.OrderBy(l => l.DateTime).FirstOrDefault().DateTime;
var endDate = list.OrderBy(l => l.DateTime).LastOrDefault().DateTime;
return ((startDate), (endDate));
}
public Client GetClientInfo(int ClientId)
{
var clientdb = new ClientDBContext();
return clientdb.client.First(l => l.id == ClientId);
}
/// <summary>
/// 根据障碍类型 获取 简称
/// </summary>
/// <param name="barrierType"></param>
/// <returns></returns>
public string GetBarrierType(string barrierType)
{
if (string.IsNullOrEmpty(barrierType)) return "";
var barrierTypeStr = "";
switch (barrierType)
{
case "上升敲出":
barrierTypeStr = "UpOut";
break;
case "下降敲出":
barrierTypeStr = "DownOut";
break;
case "上升敲入":
barrierTypeStr = "UpIn";
break;
case "下降敲入":
barrierTypeStr = "DownIn";
break;
}
return barrierTypeStr;
}
/// <summary>
/// 交易类型 转换简称
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public string GetTradeTypeAbbreviation(trade t)
{
var strType = "";
switch (t.TradeType)
{
case "香草期权":
strType = "VNL";
break;
case "障碍期权":
if (t.trade_barrier_option.BarrierType.Contains("双障碍敲"))
{
//二元障碍期权
strType = "BIB";
}
else
{
strType = "BRR";
}
break;
case "多触碰点障碍期权": //todo
strType = "ACL";
break;
case "亚式期权":
strType = "ASN";
break;
case "二元期权":
if (t.ExerciseMode == "European")
{
strType = "DGT";
}
else
{
//一触即发期权
strType = "TRN";
}
break;
case "结构化交易":
strType = "STG";
break;
case "凤凰期权":
strType = "PHX";
break;
case "雪球期权":
strType = "SNB";
break;
case "区间累计期权":
strType = "RAL";
break;
default:
strType = "UNK";
break;
}
return strType;
}
/// <summary>
/// 获取交易市场
/// </summary>
/// <param name="underlyingCode"></param>
/// <returns></returns>
public string GetUnderlyingCaihuaTradeMarketByVarietyId(string underlyingcode)
{
if (string.IsNullOrWhiteSpace(underlyingcode)) return "";
return DataCacheProvider.GetVariety(underlyingcode)?.TradingMarket.ToString();
}
/// <summary>
/// 敲入敲入障碍价格
/// </summary>
/// <param name="isMoneynessOption"></param>
/// <param name="kiBarrier"></param>
/// <param name="spotPrice"></param>
/// <returns></returns>
public double? GetKIBarrier(string isMoneynessOption, double? Barrier, double? spotPrice)
{
if (isMoneynessOption == "是")
{
return (Barrier * spotPrice);
}
else
{
return (Barrier);
}
}
public string GetPayoffType(string payoffType)
{
var strType = "";
switch (payoffType)
{
case "ArithmeticAverage":
strType = "Arithmetic";
break;
case "GeometricAverage":
strType = "Geometric";
break;
case "DiscreteArithmeticAverage":
strType = "Discrete";
break;
case "EnhancedArithmeticAverage":
strType = "Contonuous";
break;
}
return strType;
}
}
public class ResponseTrade
{
/// <summary>
/// 合约编号 (交易编码)
/// </summary>
public string ordid { get; set; }
/// <summary>
/// 账户组 (期货子公司固定使用 10038801)
/// </summary>
public string groupid { get; set; }
/// <summary>
/// 子期权编号 (单腿编号)
/// </summary>
public string sub_ordid { get; set; }
/// <summary>
/// 生效起始日 (effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public int? effective_date_from { get; set; }
/// <summary>
/// 生效截止日(effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public int? effective_date_to { get; set; }
/// <summary>
/// SAC编号(客户编号)
/// </summary>
public string sac_ordid { get; set; }
/// <summary>
/// 合约名称(标的合约-Call/Put-到期日M-执行价K-亚式期权观察起始日OB 只有亚式期权为例子1,其余都为例子2 例1C2203-Put-0117M-2692K-1217OB 例2AU9999-Put-0321M-406K)
/// </summary>
public string ordname { get; set; }
/// <summary>
/// 合约类型区分(VNL 普通期权 BRR 障碍期权 ACL 多触碰点障碍期权 ASN 亚式期权 DGT 二元期权 STG 组合期权 PHX 凤凰期权 BIB 二元障碍期权 SNB 雪球期权 TRN 一触即发期权 UNK 未知类型 RAL 区间累计期权)
/// </summary>
public string contract_type_cls { get; set; }
/// <summary>
/// 多空区分(L 多头 S 空头)
/// </summary>
public string long_short_position_cls { get; set; }
/// <summary>
/// PUTCALL区分 看涨看跌 P 认沽 看跌 C 认购 看涨
/// </summary>
public string put_call_cls { get; set; }
/// <summary>
/// 结算方式区分 固定为现金C
/// </summary>
public string settlement_type_cls { get; set; }
/// <summary>
/// 行权类型区分 (1 欧式 2 美式)
/// </summary>
public string exercise_type_cls { get; set; }
/// <summary>
/// 合约行权价格(执行价格)
/// </summary>
public double? strike_price { get; set; }
/// <summary>
/// 合约结算币种 (固定为CNY)
/// </summary>
public string settlement_currency { get; set; }
/// <summary>
/// 合约计价币种 (固定为CNY)
/// </summary>
public string pricing_currency { get; set; }
/// <summary>
/// 合约开始日期(effective_date_to和effective_date_from都为开仓日期)
/// </summary>
public int? start_date { get; set; }
/// <summary>
/// 合约到期日期(到期日期)
/// </summary>
public int? maturity_date { get; set; }
/// <summary>
/// 期权费(成交金额)
/// </summary>
public double? premium_amt { get; set; }
/// <summary>
/// 期权费支付日 (权利金应付日)
/// </summary>
public int? premium_date { get; set; }
/// <summary>
/// 参与率
/// </summary>
public double? participation_rate { get; set; }
/// <summary>
/// Rate2 (默认为0)
/// </summary>
public double levelpercentage { get; set; }
/// <summary>
/// 交易日历区分 (默认是1)
/// </summary>
public string calendar_type_cls { get; set; }
/// <summary>
/// 交易对手名称 (客户名称)
/// </summary>
public string counterparty_name { get; set; }
/// <summary>
/// 交易对手SAC编号(SAC主协议编号)
/// </summary>
public string counterparty_sac_ordid
{ get; set; }
/// <summary>
/// 交易日变更规则区分(默认为:1 后移 Following)
/// </summary>
public string businessday_convention_cls { get; set; }
/// <summary>
/// 交易日变更规则区分(默认为:1 后移 Following)
/// </summary>
public string calcrules_cls { get; set; }
/// <summary>
/// 交易日计息规则区分 (默认为:4 工作日/240)
/// </summary>
public string single_multi_cls { get; set; }
/// <summary>
/// 标的权重计算区分 ( 固定为1 )
/// </summary>
public string weight_calc_cls { get; set; }
/// <summary>
/// 产品类型说明 ( 结构类型:普通期权、奇异期权 )
/// </summary>
public string additionalproduct_type { get; set; }
/// <summary>
/// 合约贴现率 (分红率 默认为,risk free rate)
/// </summary>
public double? dis_rate { get; set; }
/// <summary>
/// 标的证券代码 (标的代码(不带市场后缀))
/// </summary>
public string underlying_stkcode { get; set; }
/// <summary>
/// 标的财汇交易市场 (根据交易市场在参考sheet区)
/// </summary>
public string underlying_caihua_trade_market { get; set; }
/// <summary>
/// 财华证券类别区分0 (默认为:5.期货)
/// </summary>
public string caihua_setype0_cls { get; set; }
/// <summary>
/// 初始标的价格 (期初标的价格)
/// </summary>
public double? initial_spot { get; set; }
/// <summary>
/// 权重 (默认值等于1)
/// </summary>
public double? weight_rate { get; set; }
/// <summary>
/// 标的红利率 (分红率默认为dis_rate)
/// </summary>
public double? div_rate { get; set; }
/// <summary>
/// 标的波动率 (持仓波动率)
/// </summary>
public double? vol_rate { get; set; }
/// <summary>
/// 融资率 (分红率默认为dis_rate)
/// </summary>
public double? fund_rate { get; set; }
/// <summary>
/// 障碍类型区分 ("DownIn 下限敲入 UpIn 上限敲入 DownOut 下限敲出 UpOut 上限敲出")
/// </summary>
public string barrier_type_cls { get; set; }
/// <summary>
/// 障碍值 (障碍价格(仅限单障碍的情形))
/// </summary>
public double? barrier_value { get; set; }
/// <summary>
/// 补偿率 (补偿金额(仅限单障碍的情形))
/// </summary>
public double? rebate_rate { get; set; }
/// <summary>
/// 敲出价格 (敲出障碍价格)
/// </summary>
public double? knockout_price { get; set; }
/// <summary>
/// 敲入价格 (敲入障碍价格)
/// </summary>
public double? knockin_price { get; set; }
/// <summary>
/// 息票率 (票息率)
/// </summary>
public double? coupon_rate { get; set; }
/// <summary>
/// 观察日期LIST (观察日期列表(需要列出具体日期及其对应的价格))
/// </summary>
public string observationdate_list { get; set; }
/// <summary>
/// 观察开始日期 (观察日首日)
/// </summary>
public string observe_start_date
{ get; set; }
/// <summary>
/// 观察结束日期 (观察日尾日)
/// </summary>
public string observe_end_date
{ get; set; }
/// <summary>
/// 观察频率(观察频率:每日\每月)
/// </summary>
public string obsfreq { get; set; }
/// <summary>
/// 算数几何平均区分(根据亚式均价计算方式选择)
/// </summary>
public string avg_type_cls { get; set; }
/// <summary>
/// 连续离散平均区分(根据亚式均价计算方式选择)
/// </summary>
public string discrete_type_cls { get; set; }
/// <summary>
/// 剩余名义本金(持仓名义本金)
/// </summary>
public double? notional { get; set; }
/// <summary>
/// 预付金 (持仓预付金)
/// </summary>
public double? margin { get; set; }
/// <summary>
/// 亚式期权累积观察标的价格 (亚式均价)
/// </summary>
public double? accu_underlying_price_asian { get; set; }
/// <summary>
/// 亚式期权累计观察日计数 (亚式期权均价当前观察日个数)
/// </summary>
public double accu_past_count_asian { get; set; }
/// <summary>
/// 浮动盈亏 (浮动盈亏)
/// </summary>
public double? float_profit_loss { get; set; }
/// <summary>
/// 实现盈亏 (实现盈亏)
/// </summary>
public double? accu_profit_loss { get; set; }
/// <summary>
/// NPV (pv)
/// </summary>
public double? npv { get; set; }
/// <summary>
/// Delta (delta)
/// </summary>
public double? delta { get; set; }
/// <summary>
/// Gamma (gamma)
/// </summary>
public double? gamma { get; set; }
/// <summary>
/// Theta (theta)
/// </summary>
public double? theta { get; set; }
/// <summary>
/// Vega (vega)
/// </summary>
public double? vega { get; set; }
/// <summary>
/// Rho (Rho)
/// </summary>
public double? rho { get; set; }
/// <summary>
/// 结算日期
/// </summary>
public string settle_date { get; set; }
/// <summary>
/// 标的品种,如玉米2205合约:C2205记为C
/// </summary>
public string product_code { get; set; }
/// <summary>
/// 名义数量按期货合约报价单位记录(份额),如鸡蛋按照500kg
/// </summary>
public double? volume { get; set; }
/// <summary>
/// delta金额
/// </summary>
public double? cashdelta { get; set; }
/// <summary>
/// 权利金单价
/// </summary>
public double? current_value { get; set; }
/// <summary>
/// 成交金额
/// </summary>
public double? market_value { get; set; }
/// <summary>
/// 当日盈亏
/// </summary>
public double? pnl { get; set; }
/// <summary>
/// 单腿期权:cashdelta*21.68%+vega*10%
/// 多腿期权:多腿轧差后的cashdelta*21.68%+vega*10%
/// </summary>
public double? stress_test_value { get; set; }
/// <summary>
/// 与volume一致
/// </summary>
public double? underlying_stk_qty { get; set; }
public string UnderlyingCode { get; set; }
/// <summary>
/// 合约乘数
/// </summary>
public double? underlying_multiplier { get; set; }
/// <summary>
/// 权利金单价,与current_value一致
/// </summary>
public double? underlying_royalty_price { get; set; }
}
public class ObservationDate
{
public DateTime DateTime { get; set; }
public double Price { get; set; }
}
}