# 模型字典 & API

Json数据上传到服务器,服务器将Json数据结果返回。可以使用Python等调用示例代码,也可以通过界面调用

# 基础公式

# 利率平价 imply IR

已知本币、掉期,求外币(被报价标的)利率

{
"version":"formula.V202001",
"model":"InterestRateParity",
"function":"getCompIRateF",
"marketData":
{
"Years":1,
"Spot":6.5,
"Swap":0.0395,
"RateD":0.022
}
}

批量计算:

{
"version":"formula.V202001",
"model":"InterestRateParity",
"function":"getCompIRateFList",
"marketData":
{
"Years":[1,1,1],
"Spot":[6.5,6.5,6.5],
"Swap":[0.0395,0.0395,0.0395],
"RateD":[0.022,0.022,0.022]
}
}

# 利率平价 imply Swap

已知本币、外币(被报价标的)利率,求掉期

{
"version":"formula.V202001",
"model":"InterestRateParity",
"function":"getSwap",
"marketData":
{
"Years":1,
"Spot":6.5,
"RateF":0.01594,
"RateD":0.022
}
}

批量计算:

{
"version":"formula.V202001",
"model":"InterestRateParity",
"function":"getSwapList",
"marketData":
{
"Years":[1,1,1],
"Spot":[6.5,6.5,6.5],
"RateF":[0.01594,0.01594,0.01594],
"RateD":[0.022,0.022,0.022]
}
}

另一种计算接口:

{
"version":"pricing.V2021",
"target":"Swap",
"derivative":
{
"DeliveryYears":[1,1,1],
},
"marketData":
{
"Spot":[6.7,6.7,6.7],
"RateF":[0.00,0.00,0.00],
"RateD":[0.02,0.02,0.02]
}
}

# 历史波动率his vol

历史波动率是指价格日变动的样本年化标准差。

输入

  • "Spot":[377.4, 376.75, 377.68, 377.05, 375.46, 373.42, 375.32, 376.29]:以天为单位的现货价格序列,一般去Close价格。
  • periodLen:波动率期限长度,例如periodLen=7,代表计算1W的历史波动率
  • topN:返回波动率序列长度,如果topN大于(Spot长度-periodLen),返回序列长度为(Spot长度-periodLen)

返回

  • hisVolList": [ ,,,]:返回历史波动率的时间序列

下面是计算AUTD历史波动率的Json输入文件

{
"version":"formula.V202001",
"model":"historicalVol",
"function":"getHisVol",
"marketData":
{
"Spot":[377.4, 376.75, 377.68, 377.05, 375.46, 373.42, 375.32, 376.29, 373.25, 373.86, 372.68, 373.89, 373.21, 370.34, 366.5, 365.33, 362.03, 362.96, 365.87, 374.92, 377.93, 377.09, 376.86, 377.45, 380.23, 378.18, 377.64, 375.07, 376.25, 375.63, 374.77, 377.82, 378.09, 377.97, 379.73, 379.8, 377.27, 376.28, 376.22, 376.82, 375.28, 375.66, 374.38, 372.47, 370.73, 368.74, 366.45, 369.71, 370.55, 370.55, 371.89, 371.74, 371.51, 369.49, 369.91, 376.14, 380.22, 380.53, 387.13, 384.94, 385.86, 386.33, 383.55, 378.34, 387.34, 389.53, 392.67, 391.01, 389.62, 391.37, 392.72, 388.73, 391, 389.49, 389.43, 387.84, 387.91, 384.53, 380.03, 380.22, 379.87, 380.99, 380.95, 378.34, 374.62, 369.82, 372.45, 371.38, 372.55, 373.15, 374.32, 375.61, 373.75, 371.68, 374.73, 371.25, 367.25, 368.41, 366.06, 368.23, 371.22, 368.11, 367.56, 366.95, 367.08, 361.47, 356.27, 362.16, 365.45, 365.96, 365.95, 364.54, 364.99, 365, 364.49, 366.2, 364.46, 363.8, 361.96, 361.27, 363.37, 360.95, 356.11, 357.9, 355, 357.89, 361.48, 360.3, 364.4, 369.44, 374.13, 377.26, 377.53, 372.88, 370.13, 371.04, 382.06, 381.45, 376.92, 374.68, 379.45, 382.4, 387.97, 386.73, 384.7, 383.82, 384.98, 387.44, 386.31, 387.79, 387.15, 384.98, 384.6, 382.95, 385.31, 384.73, 386.16, 384.67, 384.47, 395.54, 397.02, 400.96, 399.56, 397.12, 392.18, 390.46, 391.68, 393.6, 390.89, 389.83, 389.46, 391.45, 394.41, 390.52, 386.63, 385.35, 381.14, 381.36, 381.44, 382.16, 385.94, 385.4, 381.24, 381.62, 380.18, 376.83, 370.42, 371.05, 378.64, 378.59, 378.63, 384.73, 391.67, 390.91, 391.49, 393.29, 394.63, 396.73, 395.23, 393.48, 394.24, 395.26, 408.04, 406.36, 401.99, 403.22, 400.91, 398.76, 396.43, 399.51, 404.33, 403.28, 400.9, 402.03, 404.09, 403.6, 402.2, 402.68, 403.03, 402.29, 401.88, 407.55, 408.01, 403.93, 404.28, 401.96, 398.07, 397.32, 396.82, 402.43, 406.36, 414.86, 413.02, 414.11, 415.54, 416.97, 416.02, 416.83, 416.33, 412.47, 413.16, 413.16, 413.61, 415.49, 421.16, 422.05, 419.52, 417.02, 415.73, 412.81, 414.68, 410.96, 414.32, 418.21, 427.59]
},
"controlParameters":
{
"periodLen":30,
"topN":100,
"NPerY":365
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 价格发现 imply vol

市场成交的期权费是推导、构建隐含波动率曲面的主要依据。

输入

  • 期权费及衍生品合约信息、其他市场数据

返回

  • 隐含波动率
{
"version":"AnalyticSolution.V202005",
"model":"BlackScholes",
"function":"getImplyVol",
"derivative":
{
"CallPut":1,
"Strike":1900,
"DeliveryYears":0.5,
"ExpiryYears":0.5,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":1900,
"Premium":100
},
"controlParameters":
{
"volFrom":0.05,
"volTo":0.3
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# Delta映射Strike

从Delta获得对应具体的Strike,例如1个月25D Call的具体价格位置在哪儿?多用于机构间交易员最终确定成交细节,例如成交了25RR后,落地到具体细节。

输入

  • 衍生品合约细节
  • 市场数据

返回

  • Strike
{
"version":"AnalyticSolution.V202005",
"model":"BlackScholes",
"function":"getDeltaStrike",
"derivative":
{
"CallPut":1,
"Strike":1900,
"DeliveryYears":0.5,
"ExpiryYears":0.5,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":1900,
"Vol":0.15,
"Delta":0.15
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 波动率格式转换1

波动率曲面包括Delta和RRBF两种表示方式,可以互相转换。

输入

  • 波动率曲面是标准曲面格式,拥有16个水平期限点,和垂直5个Delta点
  • Delta:10D、25D、ATM
  • 期限:1D、3D、1W、2W、3W、1M、3M、6M、9M、1Y、2Y、3Y、4Y、5Y、10Y、15Y

返回

  • RRBF格式
{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceDelta",
"function":"toRRBFIVSurface",
"marketData":
{
ATM:[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
Delta10Call:[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
Delta10Put:[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
Delta25Call:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
Delta25Put:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 波动率格式转换2

波动率曲面包括Delta和RRBF两种表示方式,可以互相转换。

输入

  • 波动率曲面是标准曲面格式,拥有16个水平期限点,和垂直ATM、10/25DRR、10/25DBF五个点的值
  • RRBF:10DRR、25DRR、10DBF、25DBF、ATM
  • 期限:1D、3D、1W、2W、3W、1M、3M、6M、9M、1Y、2Y、3Y、4Y、5Y、10Y、15Y

返回

  • Delta格式的波动率曲面
{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceRRBF",
"function":"toDeltaIVSurface",
"marketData":
{
ATM:[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
RR10D:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],
BF10D:[8,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10],
RR25D:[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],
BF25D:[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 曲线插值

输入

  • "Algo":"LinearInFlatOut"
  • "Algo":"CubicSpline", "Outer":"Flat""Inner"
{
"version":"dataStructure.V202001",
"model":"curve",
"function":"getInterpolation",
"derivative":
{
"DeliveryDays":11,
"ID":1
},
"marketData":
{
"Days":[1,7,30,90,365],
"Rate":[0.1,0.2,0.25,0.28,0.35],
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat"
}
}
{
"version":"dataStructure.V202001",
"model":"curve",
"function":"getInterpolationList",
"derivative":
{
"DeliveryDays":[11,22,33],
"ID":[11,22,33]
},
"marketData":
{
"Days":[1,7,30,90,365],
"Rate":[0.1,0.2,0.25,0.28,0.35],
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat"
}
}

# 利率插值(FRA DF)

输入

  • "Algo":"LinearInFlatOut"
  • "Algo":"CubicSpline", "Outer":"Flat""Inner"
{
"version":"dataStructure.V202001",
"model":"curveZeroRate",
"function":"getInterpolation",
"derivative":
{
"days":365,
"ID":11
},
"marketData":
{
"Days":[365,720,1000,1300,1600],
"Rate":[0.01,0.02,0.025,0.028,0.035],
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat",
"DaysYear":365
}
}
{
"version":"dataStructure.V202001",
"model":"curveZeroRate",
"function":"getInterpolationList",
"derivative":
{
"days":[11,22,33]
},
"marketData":
{
"Days":[1,7,30,90,365],
"Rate":[0.1,0.2,0.25,0.28,0.35],
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat",
"DaysYear":360,
},
"codeParameters":
{
"table":"intrest_rates"
}
}

另一个插值接口,"target":"RateD" 或者 "target":"RateF"

{
"version":"pricing.V2021",
"target":"RateD",
"derivative":
{
"days":[11,22,33]
},
"marketData":
{
"Days":[1,7,30,90,365],
"Rate":[0.1,0.2,0.25,0.28,0.35],
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat",
"DaysYear":360,
}
}

# IRS

单曲线连续天数序列:

{
"version":"dataStructure.V202001",
"model":"curveZeroRate",
"function":"getIRS",
"derivative":
{
"DeliveryDays":[30,60,90,120,150,180,210],
"ID":1
},
"marketData":
{
"Days":[1,7,30,90,180,360],
"Rate":[0.03,0.07,0.1,0.13,0.18,0.22],
"IRSpread":0.02
},
"controlParameters":
{
"Algo":"CubicSpline",
"Outer":"Flat",
"DaysYear":365
}
}

# Delta波动率曲面Delta插值

波动率曲面插值在时间维度采用“平滑方差线性插值”,在垂直维度采用“三次样条插值”。

输入

  • 波动率曲面是标准曲面格式,拥有16个水平期限点,和垂直5个Delta点
  • Delta:10D、25D、ATM Delta
  • 期限:1D、3D、1W、2W、3W、1M、3M、6M、9M、1Y、2Y、3Y、4Y、5Y、10Y、15Y
  • 目标Delta的波动率

返回

  • Delta 对应波动率

下面是计算AUTD历史波动率的Json输入文件

{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceDelta",
"function":"getVolSurfaceInterpolation",
"derivative":
{
Delta:10,
ExpiryDays:20,
ID:1
},
"marketData":
{
ATM:[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
Delta10Call:[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
Delta10Put:[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
Delta25Call:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
Delta25Put:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}
{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceDelta",
"function":"getVolSurfaceInterpolationList",
"derivative":
{
Delta:[10,10,10],
ExpiryDays:[20,20,20],
ID:[1,1,1]
},
"marketData":
{
ATM:[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
Delta10Call:[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
Delta10Put:[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
Delta25Call:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
Delta25Put:[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# Delta波动率曲面Strike插值

波动率曲面插值在时间维度采用“平滑方差线性插值”,在垂直维度采用“三次样条插值”。 Strike到Delta使用迭代算法

输入

  • 波动率曲面是标准曲面格式,拥有16个水平期限点,和垂直5个Delta点
  • Delta:10D、25D、ATM Delta
  • 期限:1D、3D、1W、2W、3W、1M、3M、6M、9M、1Y、2Y、3Y、4Y、5Y、10Y、15Y
  • 合约细节
  • 目标Strike的波动率

返回

  • Strike对应波动率

下面是计算AUTD历史波动率的Json输入文件

{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceDelta",
"function":"getVolSurfaceInterpolationStrike",
"derivative":
{
"CallPut":1,
"Strike":1919,
"DeliveryYears":1,
"ExpiryYears":1,
"ExpiryDays":20,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":1905,
"ATM":[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
"Delta10Call":[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
"Delta10Put":[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
"Delta25Call":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
"Delta25Put":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}
{
"version":"dataStructure.V202001",
"model":"standardVolSurfaceDelta",
"function":"getVolSurfaceInterpolationStrikeList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1939,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ExpiryDays":[20,20,20],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"ATM":[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
"Delta10Call":[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
"Delta10Put":[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
"Delta25Call":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
"Delta25Put":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}

另一种波动率插值接口:

{
"version":"pricing.V2021",
"target":"Vol",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1819,1939,2159],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ExpiryDays":[20,20,20],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"Days":[1,3,7,14,21,30,90,180,270,365,730,1095,1460,1825,3650,5475],
"ATM":[15,16,16,17,18,19,20,21,22,22,23,23,24,24,25,25],
"Delta10Call":[25,26,26,27,28,29,30,31,32,32,33,33,34,34,35,35],
"Delta10Put":[28,29,29,32,33,33,33,34,34,35,35,35,36,37,38,38],
"Delta25Call":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30],
"Delta25Put":[20,21,21,22,22,23,23,23,23,24,25,26,27,28,29,30]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 衍生品解析解

解析解只是有一个明确公式的求解模型,近似解析解是指本来不存在求解公式,但是可以得到一个近似可用的公式解。

# 欧式期权

欧式期权(EUR Vanilla)约定未来某时间以一定的价格买入、卖出标的的权利。按照买入、卖出方向分为看涨、看跌期权。 例如A从B买入黄金看涨期权,约定行权价为1800USD每盎司,期限1周,面额1盎司,期初支付期权费20USD。一周以后如果金价涨到1900,A以1800买入,然后以1900现货价格卖出,获利100USD,净利润80USD。同样A也可以从B买入一个差额的黄金看涨期权,挂钩伦敦金指数,到期指数1900,则A直接获得100USD差额收益。 普通期权合约除了行权价(Strike)、看涨看跌(CallPut)细节外,还包括两个标的的利率(收益率、仓储成本)Rate或远期Forward,交割期限Delivery(从期权费付息日到行权交割日)、到期期限Expiry(从交易成交日到期权到期日)。

BlackScholes(BS)模型

BS市场模型假设价格满足log正态分布,在此假设下Vanilla期权具有精准解析解公式。Vanilla期权流动性好,通过BS模型反向构建的动率曲面成为整个期权市场的基础。BS模型1973年发表,其提出者迈伦•舒尔斯、罗伯特•墨顿于1997年获得诺贝尔经济学奖。该模型的主要贡献是引入了有效市场的微分视角。

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%,定义为Vol变动1%(从5%变动到6%)估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用被报价资产做面额,报价货币做定价,价格按照Pips计算
  • 例如:EURUSD,面额EUR,报价55Pips表示每10000EUR面额对应期权费55美元。

适用范围

  • 适用:外汇、商品、指数、股票、期货,部分正值且波动较低的利率市场
  • 不适用于负价格、取值品种,例如部分利率、期货品种
  • 未考虑涨跌停等市场特征,例如部分指数、股票市场
  • 不适用于极端高波动市场

单笔交易,适用于定价

{
"version":"AnalyticSolution.V202005",
"model":"BlackScholes",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":1905,
"Vol":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

一组交易,适用于存量交易批量估值、敞口计算。 其中,Notional可以选填。

{
"version":"AnalyticSolution.V202005",
"model":"BlackScholes",
"function":"getGreeksList",
"derivative":
{
"Notional":[10,10,10],
"CallPut":[1,1,1],
"Strike":[1919,1939,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"Vol":[0.06,0.06,0.06]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

双利率参数

{
"version":"AnalyticSolution.V202005",
"model":"BlackScholesRR",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"Spot":1900,
"RateD":0.02,
"RateF":0.02,
"Vol":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

Bachelier模型

1900年发表,模型假设价格满足正态分布(BS模型假设Log正态分布)。

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用被报价资产做面额,报价货币做定价,价格按照Pips计算
  • 例如:EURUSD,面额EUR,报价55Pips表示每10000EUR报价55美元。

适用范围

  • 适用:外汇、商品、股票、期货、利率市场
  • 支持负价格
  • 支持收益率不敏感的高波动市场
  • 缺点:波动率绝对值与标的价格相关,跨品种波动率不可比
{
"version":"AnalyticSolution.V202005",
"model":"Bachelier",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":195,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":190,
"Vol":9
},
"controlParameters":
{
"forwardDiff":1,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"Bachelier",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1939,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"Vol":[90,90,90]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 欧式期权(Quanto)

欧式期权(EUR Vanilla Quanto):在普通期权基础上,约定使用第三货币清算。

BlackScholes(BS)模型

BS市场模型假设价格满足log正态分布,在此假设下Vanilla期权具有精准解析解公式。Vanilla期权流动性好,通过BS模型反向构建的动率曲面成为整个期权市场的基础。BS模型1973年发表,其提出者迈伦•舒尔斯、罗伯特•墨顿于1997年获得诺贝尔经济学奖。该模型的主要贡献是引入了有效市场的微分视角。

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%,定义为Vol变动1%(从5%变动到6%)估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用被报价资产做面额,报价货币做定价,价格按照Pips计算
  • 例如:EURUSD,面额EUR,报价55Pips表示每10000EUR面额对应期权费55美元。

适用范围

  • 适用:外汇、商品、指数、股票、期货,部分正值且波动较低的利率市场
  • 不适用于负价格、取值品种,例如部分利率、期货品种
  • 未考虑涨跌停等市场特征,例如部分指数、股票市场
  • 不适用于极端高波动市场

单笔交易,适用于定价。 通过FD、DQ波动率,以及FD与FQ相关系数计算。

{
"version":"AnalyticSolution.V202005",
"model":"VanillaQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"Strike":1900,
"QuantoFactor":6.5,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"SpotFD":1900,
"SpotDQ":6.4,
"RateD":0.02,
"RateF":0.02,
"RateQ":0.02,
"Forward":1905,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

批量计算

{
"version":"AnalyticSolution.V202005",
"model":"VanillaQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1],
"Strike":[1900,1900],
"QuantoFactor":[6.5,6.5],
"DeliveryYears":[1,1],
"ExpiryYears":[1,1],
"ID":[1,1]
},
"marketData":
{
"SpotFD":[1900,1900],
"SpotDQ":[6.4,6.4],
"RateD":[0.02,0.02],
"RateF":[0.02,0.02],
"RateQ":[0.02,0.02],
"Forward":[1905,1905],
"VolFD_SMILE":[0.06,0.06],
"VolFD_ATM":[0.06,0.06],
"VolDQ_ATM":[0.06,0.06],
"Corr_FD_DQ":[0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19],
"volDiff":[0.01,0.01],
"yearDiff":[0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 通过三个货币对的波动率计算。

{
"version":"AnalyticSolution.V202005",
"model":"VanillaQuanto",
"function":"getGreeks3Vol",
"derivative":
{
"CallPut":1,
"Strike":1900,
"QuantoFactor":6.5,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"SpotFD":1900,
"SpotDQ":6.4,
"RateD":0.02,
"RateF":0.02,
"RateQ":0.02,
"Forward":1905,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolFQ_ATM":0.06,
"VolDQ_ATM":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

批量计算

{
"version":"AnalyticSolution.V202005",
"model":"VanillaQuanto",
"function":"getGreeks3VolList",
"derivative":
{
"CallPut":[1,1],
"Strike":[1900,1900],
"QuantoFactor":[6.5,6.5],
"DeliveryYears":[1,1],
"ExpiryYears":[1,1],
"ID":[1,1]
},
"marketData":
{
"SpotFD":[1900,1900],
"SpotDQ":[6.4,6.4],
"RateD":[0.02,0.02],
"RateF":[0.02,0.02],
"RateQ":[0.02,0.02],
"Forward":[1905,1905],
"VolFD_SMILE":[0.06,0.06],
"VolFD_ATM":[0.06,0.06],
"VolFQ_ATM":[0.06,0.06],
"VolDQ_ATM":[0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19],
"volDiff":[0.01,0.01],
"yearDiff":[0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 数字(Digital)期权

数字期权(Digital):约定到期日判定时刻,如果价格满足约定的大于或小于协定价格,期权持有方可以获得约定面额的收益。

BS模型

使用BS模型中ND1、ND2作为CashOrNothing和AssetOrNothing的估值公式,沿用价格的Log正态分布假设

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照百分比计算
  • 例如:EURUSD,面额USD,报价20%表示每100USD的损益面额报价20USD,20USD期权费最多可以获得100USD收益。

模型适用范围(同BS模型求解Vanilla)

  • 适用:外汇、商品、指数、股票、期货,部分正值且波动较低的利率市场
  • 不适用于负价格、取值品种,例如部分利率、期货品种
  • 未考虑涨跌停等市场特征,例如部分指数、股票市场
  • 不适用于极端高波动市场
{
"version":"AnalyticSolution.V202005",
"model":"Digital",
"function":"getPrice",
"derivative":
{
"CallPut":1,
"Strike":1919,
"DeliveryYears":10,
"ExpiryYears":10,
"ID":1
},
"marketData":
{
"RateD":0.02,
"Forward":1905,
"Vol":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"Digital",
"function":"getPriceList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1939,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"Vol":[0.06,0.06,0.06]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 数字期权(Quanto)

数字期权(Digital)(Quanto):

BS模型

输入

F:被报价资产;D:报价货币;Q:结算货币。

返回

百分比报价,0.5表示50%。

模型适用范围(同BS模型求解Vanilla)

波动率非极端情况 不存在负价格

{
"version":"AnalyticSolution.V202005",
"model":"DigitalQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"Strike":1900,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"SpotFD":1900,
"SpotDQ":6.5,
"RateD":0.02,
"RateF":0.02,
"RateQ":0.02,
"Forward":1905,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

批量计算

{
"version":"AnalyticSolution.V202005",
"model":"DigitalQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1900,1900,1900],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1900,1900,1900],
"SpotDQ":[6.5,6.5,6.5],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"VolFD_SMILE":[0.06,0.06,0.06],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Barrier)

单边障碍期权(SingleBarrier):俗称“鲨鱼鳍”,单边触碰期权是在普通Vanilla期权基础上,加上了一个存续期内单边(不)触碰条件,如向上触碰UI(Up In),只有满足触碰条件后Vanilla期权才生效(敲入)或失效(敲出)。可以约定“敲出”或者“未敲入”,期权持有方获得补偿(rebate)。

BS障碍模型

沿用BS模型价格满足Log正态分布假设,使用Reiner模型求解

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Barrier:触碰价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;Rebate:约定“敲出”或者“未敲入”,期权持有方获得单位面额对应的补偿;}
  • 触碰类型(BarrierType): DI(down Knock in), DO(down Knock out), UI(up Knock in), UO(up Knock out)
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用被报价资产做面额,报价货币做定价,价格按照Pips计算
  • 例如:EURUSD,面额EUR,报价55Pips表示每10000EUR报价55美元。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、Barrier两个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierVanilla",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"Barrier":1959,
"DeliveryYears":1,
"ExpiryYears":1,
"ForwardYears":1,
"Rebate":13.5,
"BarrierType":"UI",
"ID":1
},
"marketData":
{
"SpotFD":1919,
"RateD":0.02,
"RateF":0.02,
"VolFD_SMILE":0.06,
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierDigital",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1850,1850,1850],
"Barrier":[2120,2150,2170],
"BarrierType":["UO","UO","UO"],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"Rebate":[0.05,0.05,0.05],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1850,1850,1850],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.16,0.16,0.16]
},
"controlParameters":
{
"forwardDiff":[18.5,18.5,18.5],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Barrier)(Quanto)

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"QuantoFactor":6.5,
"Strike":1919,
"Barrier":1959,
"DeliveryYears":1,
"ExpiryYears":1,
"ForwardYears":1,
"Rebate":13.5,
"BarrierType":"UI",
"ID":1
},
"marketData":
{
"SpotFD":1919,
"SpotDQ":6.5,
"RateD":0.02,
"RateF":0.02,
"RateQ":0.02,
"Forward":1905,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1,1],
"QuantoFactor":[6.5,6.5,6.5],
"Strike":[1919,1919,1919],
"Barrier":[1959,1959,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ForwardYears":[1,1,1],
"Rebate":[13.5,13.5,13.5],
"BarrierType":["UI","UI","UI"],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"SpotDQ":[6.5,6.5,6.5],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"VolFD_SMILE":[0.06,0.06,0.06],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Barrier)(vanna-volga)

vanna-volga模型

沿用BS模型Log正态分布假设,使用Reiner模型求解,再经过vanna-volga模型做调整,获得一个考虑了波动率曲面的近似解析解。

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Barrier:触碰价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;Rebate:约定“敲出”或者“未敲入”,期权持有方获得单位面额对应的补偿,Rebate输入使用Pips输入,例如0.0050,表示50USDPips;}
  • 触碰类型(BarrierType): DI(down Knock in), DO(down Knock out), UI(up Knock in), UO(up Knock out)
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;RR25D:25D的风险逆转组合市场价格;BF25D:25D的蝶式组合市场价格;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用被报价资产做面额,报价货币做定价,价格按照Pips计算
  • 例如:EURUSD,面额EUR,报价55Pips表示每10000EUR报价55美元。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:模型是一个近似解析解。

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierVV",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"Barrier":1959,
"BarrierType":"UI",
"DeliveryYears":1,
"ExpiryYears":1,
"Rebate":13.5,
"ID":1
},
"marketData":
{
"Spot":1919,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.07,
"Vol50DCall":0.06,
"RR25D":0.03,
"BF25D":0.02
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierVV",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1919,1919],
"Barrier":[1939,1959,1989],
"BarrierType":["UI","UI","UI"],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"Rebate":[13.5,13.5,13.5],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1919,1919,1919],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.07,0.07,0.07],
"Vol50DCall":[0.06,0.06,0.06],
"RR25D":[0.03,0.03,0.03],
"BF25D":[0.02,0.02,0.02]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Quanto)(vanna-volga)

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierVVQuanto",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"QuantoFactor":6.5,
"Strike":1919,
"Barrier":1959,
"DeliveryYears":1,
"ExpiryYears":1,
"ForwardYears":1,
"Rebate":13.5,
"BarrierType":"UI",
"ID":1
},
"marketData":
{
"SpotFD":1919,
"SpotDQ":6.5,
"RateD":0.02,
"RateF":0.02,
"RateQ":0.02,
"Forward":1905,
"VolFD_SMILE":0.06,
"RR25D":0.06,
"BF25D":0.04,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierVVQuanto",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"QuantoFactor":[6.5,6.5,6.5],
"Strike":[1919,1919,1919],
"Barrier":[1959,1959,1959],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ForwardYears":[1,1,1],
"Rebate":[13.5,13.5,13.5],
"BarrierType":["UI","UI","UI"],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"SpotDQ":[6.5,6.5,6.5],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"Forward":[1905,1905,1905],
"VolFD_SMILE":[0.06,0.06,0.06],
"RR25D":[0.06,0.06,0.06],
"BF25D":[0.04,0.04,0.04],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Barrier)数字

单边障碍数字期权(Single Barrier Digital):在普通数字(digital)期权基础上,加上了一个存续期内单边(不)触碰条件,如向上触碰UI(Up In),只有满足触碰条件后Digital期权才生效(敲入)或失效(敲出)。可以约定“敲出”或者“未敲入”,期权持有方获得补偿(rebate)。

BS解析解模型

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;Barrier:触碰价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;Rebate:约定“敲出”或者“未敲入”,期权持有方获得单位面额对应的补偿,Rebate按照百分比输入,如0.2表示20%;
  • 触碰类型(BarrierType): DI(down Knock in), DO(down Knock out), UI(up Knock in), UO(up Knock out)}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照百分比计算
  • 例如:EURUSD,面额USD,报价20%表示每100USD的损益面额报价20USD,20USD期权费最多可以获得100USD收益。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、Barrier两个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierDigital",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1850,
"Barrier":2150,
"BarrierType":"UO",
"DeliveryYears":1,
"ExpiryYears":1,
"Rebate":0.05,
"ID":1
},
"marketData":
{
"Spot":1850,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.16
},
"controlParameters":
{
"forwardDiff":18.5,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierDigital",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1850,1850,1850],
"Barrier":[2120,2150,2170],
"BarrierType":["UO","UO","UO"],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"Rebate":[0.05,0.05,0.05],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1850,1850,1850],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.16,0.16,0.16]
},
"controlParameters":
{
"forwardDiff":[18.5,18.5,18.5],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边障碍(Barrier)(Quanto)

{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"Strike":1919,
"QuantoFactor":1,
"Barrier":1959,
"BarrierType":"UI",
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"ForwardYears":0.05,
"Rebate":6.5,
"ID":1
},
"marketData":
{
"SpotFD":1919,
"Swap":0,
"SpotDQ":6.5,
"RateF":0.02,
"RateD":0.02,
"RateQ":0.02,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}
{
"version":"AnalyticSolution.V202005",
"model":"SingleBarrierQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1919,1919],
"QuantoFactor":[1,1,1],
"Barrier":[1959,1959,1959],
"BarrierType":["UI","UI","UI"],
"DeliveryYears":[0.05,0.05,0.05],
"ExpiryYears":[0.05,0.05,0.05],
"ForwardYears":[0.05,0.05,0.05],
"Rebate":[6.5,6.5,6.5],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"Swap":[0,0,0],
"SpotDQ":[6.5,6.5,6.5],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"VolFD_SMILE":[0.06,0.06,0.06],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

# 双边障碍(Barrier)

双边障碍期权(DoubleBarrierVanilla):在普通Vanilla期权基础上,加上了一个存续期内双边(不)触碰条件,只有满足触碰条件后Vanilla期权才生效(触碰任何一边敲入)或失效(触碰任何一边敲出)。

BS解析解模型

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;BarrierUp\BarrierDown:上、下障碍价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;
  • BarrieType:DKO表示敲出 Double knock out、DKI表示敲入 Double knock in;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照Pips计算

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、BarrierUp、BarrierDown三个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierVanilla",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"BarrierUp":1959,
"BarrierDown":1859,
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"BarrieType":"DKO",
"ID":1
},
"marketData":
{
"Spot":1919,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierVanilla",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"BarrierUp":1959,
"BarrierDown":1859,
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"BarrieType":"DKO",
"ID":1
},
"marketData":
{
"Spot":1919,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.06
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 双边障碍(Barrier)期权(Quanto)

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"Strike":1919,
"QuantoFactor":1,
"BarrierUp":1959,
"BarrierDown":1859,
"BarrierType":"DKO",
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"ForwardYears":0.05,
"ID":1
},
"marketData":
{
"SpotFD":1919,
"Swap":0,
"SpotDQ":6.5,
"RateQ":0.02,
"VolFD_SMILE":0.06,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1919,1919],
"QuantoFactor":[1,1,1],
"BarrierUp":[1959,1959,1959],
"BarrierDown":[1859,1859,1859],
"BarrierType":["DKO","DKO","DKO"],
"DeliveryYears":[0.05,0.05,0.05],
"ExpiryYears":[0.05,0.05,0.05],
"ForwardYears":[0.05,0.05,0.05],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"Swap":[0,0,0],
"SpotDQ":[6.5,6.5,6.5],
"RateQ":[0.02,0.02,0.02],
"VolFD_SMILE":[0.06,0.06,0.06],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 双边障碍(Barrier)数字

双边障碍数字期权(DoubleBarrierDigital):在普通Digital期权基础上,加上了一个存续期内双边(不)触碰条件,只有满足触碰条件后Digital期权才生效(触碰任何一边敲入)或失效(触碰任何一边敲出)。

BS解析解模型

输入

  • derivative{ CallPut:看涨1 看跌-1;Strike:行权价格;BarrierUp\BarrierDown:上、下障碍价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;
  • BarrieType:DKO表示敲出、DKI表示敲入}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照百分比计算
  • 例如:EURUSD,面额USD,报价20%表示每100USD的损益面额报价20USD,20USD期权费最多可以获得100USD收益。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、BarrierUp、BarrierDown三个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierDigital",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1850,
"BarrierUp":2150,
"BarrierDown":1750,
"BarrierType":"DKO",
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"Spot":1850,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.16
},
"controlParameters":
{
"forwardDiff":18.5,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"DoubleBarrierDigital",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1850,1870,1890],
"BarrierUp":[2150,2150,2150],
"BarrierDown":[1750,1750,1750],
"BarrierType":["DKO","DKO","DKO"],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1850,1850,1850],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.06,0.06,0.06]
},
"controlParameters":
{
"forwardDiff":[18.5,18.5,18.5],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰(Touch)

单边触碰期权(OneTouch):约定存续期内单边触碰或者不触碰,期权持有方获得约定面额损益。

BS解析解模型

输入

  • derivative{ Touch:触碰价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;
  • TouchType:OTU表示One Touch Up、OTD表示One Touch Down、NTU表示No Touch Up、NTD表示No Touch Down;}
  • marketData{ RateD:报价货币利率0.01表示1%;Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照百分比计算
  • 例如:EURUSD,面额USD,报价20%表示每100USD的损益面额报价20USD,20USD期权费最多可以获得100USD收益。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、Touch两个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"OneTouch",
"function":"getGreeks",
"derivative":
{
"Touch":2150,
"DeliveryYears":1,
"ExpiryYears":1,
"TouchType":"OTU",
"ID":1
},
"marketData":
{
"Spot":1919,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.16
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"OneTouch",
"function":"getGreeksList",
"derivative":
{
"Touch":[2150,2150,2150],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"TouchType":["OTU","OTU","OTU"],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1919,1919,1919],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.16,0.16,0.16]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰(Touch)(Quanto)

{
"version":"AnalyticSolution.V202005",
"model":"OneTouchQuanto",
"function":"getGreeks2VolCorr",
"derivative":
{
"CallPut":1,
"Strike":1919,
"Touch":1939,
"TouchType":"OTU",
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"ForwardYears":0.05,
"ID":1
},
"marketData":
{
"SpotFD":1919,
"Swap":0,
"SpotDQ":6.5,
"RateF":0.02,
"RateD":0.02,
"RateQ":0.02,
"VolFD_SMILE":0.26,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"OneTouchQuanto",
"function":"getGreeks2VolCorrList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1919,1919],
"Touch":[1939,1939,1939],
"TouchType":["OTU","OTU","OTU"],
"DeliveryYears":[0.05,0.05,0.05],
"ExpiryYears":[0.05,0.05,0.05],
"ForwardYears":[0.05,0.05,0.05],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"Swap":[0,0,0],
"SpotDQ":[6.5,6.5,6.5],
"RateF":[0.02,0.02,0.02],
"RateD":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"VolFD_SMILE":[0.26,0.26,0.26],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

# 双边触碰(Touch)

双边触碰期权(DoubleTouch):约定存续期内双边触碰任意一边(Double One Touch)或者不触碰(Double NO Touch),期权持有方获得约定面额损益。

BS解析解模型

输入

  • derivative{ TouchUp\TouchDown:上、下触碰价格;Delivery\Expiry:剩余交割时间(交割日-起息日)\到期时间(到期日-交易日),以年为单位,1表示1年;
  • TouchType:DOT表示Double One Touch、DNT表示Double No Touch;}
  • marketData{ RateD:报价货币利率0.01表示1%;RateF:被报价货币(标的)利率(成本率、收益率);Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}
  • controlParameters{ 参数可以设置为0,当为0时使用默认值。Delta、Gamma使用默认1%*Spot,标识现货变动1期权估值的变动,相当于持有现货的头寸;Vega使用1%*Vol(不同于BS模型),定义为Vol变动1期权估值的变化;Theta使用0.00274年(1天),定义为期限减少1天估值的变化;}

返回

  • 返回值包括:价格、Greeks敞口
  • 定价公式使用损益做面额,报价货币同损益货币,价格按照百分比计算
  • 例如:EURUSD,面额USD,报价20%表示每100USD的损益面额报价20USD,20USD期权费最多可以获得100USD收益。

模型适用范围

适用于外汇、商品、股票、期货、利率市场 缺点:未考虑波动率曲面,合约存在Strike、TouchUp、TouchDown三个取值点,模型简化为一个Vol取值。

{
"version":"AnalyticSolution.V202005",
"model":"DoubleTouch",
"function":"getGreeks",
"derivative":
{
"TouchUp":2150,
"TouchDown":1750,
"DeliveryYears":1,
"ExpiryYears":1,
"TouchType":"DNT",
"ID":1
},
"marketData":
{
"Spot":1919,
"Swap":10,
"RateD":0.02,
"RateF":0.02,
"Vol":0.16
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用 批量计算: 其中Payoff 字段可以选填,默认为1

{
"version":"AnalyticSolution.V202005",
"model":"DoubleTouch",
"function":"getGreeksList",
"derivative":
{
"Payoff":[100,100,100],
"TouchUp":[2150,2150,2150],
"TouchDown":[1750,1750,1750],
"DeliveryYears":[1,1,1],
"ExpiryYears":[1,1,1],
"TouchType":["DNT","DOT","DNT"],
"ID":[1,1,1]
},
"marketData":
{
"Spot":[1919,1919,1919],
"Swap":[10,10,10],
"RateD":[0.02,0.02,0.02],
"RateF":[0.02,0.02,0.02],
"Vol":[0.16,0.16,0.16]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 双边触碰(Touch)(Quanto)

{
"version":"AnalyticSolution.V202005",
"model":"DoubleTouchQuanto",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1919,
"TouchUp":1939,
"TouchDown":1889,
"TouchType":"DOT",
"DeliveryYears":0.05,
"ExpiryYears":0.05,
"ForwardYears":0.05,
"ID":1
},
"marketData":
{
"SpotFD":1919,
"Swap":0,
"SpotDQ":6.5,
"RateF":0.02,
"RateD":0.02,
"RateQ":0.02,
"VolFD_SMILE":0.26,
"VolFD_ATM":0.06,
"VolDQ_ATM":0.06,
"Corr_FD_DQ":0.35
},
"controlParameters":
{
"forwardDiff":19,
"volDiff":0.01,
"yearDiff":0.00274
}
}

批量计算:

{
"version":"AnalyticSolution.V202005",
"model":"DoubleTouchQuanto",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1,1],
"Strike":[1919,1919,1919],
"TouchUp":[1939,1939,1939],
"TouchDown":[1839,1839,1839],
"TouchType":["DOT","DOT","DOT"],
"DeliveryYears":[0.05,0.05,0.05],
"ExpiryYears":[0.05,0.05,0.05],
"ForwardYears":[0.05,0.05,0.05],
"ID":[1,1,1]
},
"marketData":
{
"SpotFD":[1919,1919,1919],
"Swap":[0,0,0],
"SpotDQ":[6.5,6.5,6.5],
"RateF":[0.02,0.02,0.02],
"RateD":[0.02,0.02,0.02],
"RateQ":[0.02,0.02,0.02],
"VolFD_SMILE":[0.26,0.26,0.26],
"VolFD_ATM":[0.06,0.06,0.06],
"VolDQ_ATM":[0.06,0.06,0.06],
"Corr_FD_DQ":[0.35,0.35,0.35]
},
"controlParameters":
{
"forwardDiff":[19,19,19],
"volDiff":[0.01,0.01,0.01],
"yearDiff":[0.00274,0.00274,0.00274]
}
}

# 数值解-蒙特卡洛模拟MC

蒙特卡洛模拟(MC)

蒙特卡洛模拟

输入

  • derivative{ days:期权到期天数;交割日在MCCashFlow体现;window:观察窗口模式,可输入["EUR","AME"];statusInit:合约状态,status:可输入[-1,0,1] -1失效终止、0未激活、1激活状态;}
  • marketData{ spot:现货价格;RateD:报价货币利率0.01表示1%;RateF:被报价货币(标的)利率(成本率、收益率);vol:局部波动率;dailyMoveLimit:日涨跌停,输入0.1表示10%;TimesOfTrials:路径的数量;marketModel:选择模型,可输入["BS"]}
  • MCCashFlow{eventCode:定义存续期现金流及合约状态的事件逻辑,例如One touch需要定义返回现金流(event.cashFlow),返回日(event.cashFlowDayi),敲出停止状态(event.status)}
  • derivative定义基础的合约信息;marketData定义市场模型;MCCashFlow{eventCode定义复杂的合约逻辑,体现不同合约所约定的,敲入、敲出、触碰、未触碰等路径依赖和现金清算条件,都在MCCashFlow{eventCode中通过逻辑代码体现,逻辑中需要清晰定义event.cashFlow、event.cashFlowDayi、event.status。
  • eventCode:支持脚本定义,语法遵循Java语法,不允许使用引号(")、单注释号(\),可以使用双注释*ABC*\。eventCode中可用参数:(double SYS_spot, int SYS_i,int SYS_status),spot当前现货价格;i当前天数;status当前状态,这三个变量为保留变量,自定义逻辑中可以使用,不可以再定义。

返回

  • 返回值包括:算价模型可以计算产品的price,其他模型还可以计算LocalVol、获取MC的Spot路径

模型适用范围

单localvol,如果假设波动率是一个数值,不是一个曲面,那么localVol=implyVol

# 局部波动率LocalVol

局部波动率(LocalVol)是指在未来某个时间点,某个现货价格时,标的价格走势的局部波动率,用于蒙特卡洛模拟。

输入

  • derivative{ Strike:未来某价格位置;Delivery\Expiry:未来某时刻,以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;RateF:被报价货币(标的)利率(成本率、收益率);Forward期权到期日同期限远期(期货)价格;Vol:隐含波动率;}

返回

  • 返回值包括:LocalVol值,0.05表示5%的波动率

模型适用范围

适用于一致隐含波动率曲面的情况 缺点:如果隐含波动率曲面不够光滑,Dupire可能无法计算

{
"version":"NumericalSolution.V202003",
"model":"Dupire",
"function":"getLocalVol",
"derivative":
{
"Strike":1919,
"Delivery":1,
"Expiry":1,
"ID":1
},
"marketData":
{
"RateD":0.02,
"RateF":0.06,
"Forward":1905,
"ImplyVol":0.06
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

一组曲面的计算:

{
"version":"NumericalSolution.V202003",
"model":"Dupire",
"function":"getLocalVolList",
"derivative":
{
"Strike":[1919,1919,1919],
"Delivery":[1,1,1],
"Expiry":[1,1,1],
"ID":[1,1,1]
},
"marketData":
{
"RateD":[0.02,0.02,0.02],
"RateF":[0.06,0.06,0.06],
"Forward":[1905,1905,1905],
"ImplyVol":[0.06,0.06,0.06]
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 蒙特卡洛模拟路径

欧拉离散路径

输入

  • parameters{ RD:行权价;Delivery\Expiry:未来某时刻,以年为单位,1表示1年;}
  • marketData{ RateD:报价货币利率0.01表示1%;RateF:被报价货币(标的)利率(成本率、收益率);Days:到期剩余天数;VOL:隐含波动率;TimesOfTrials:路径的数量;}

返回

  • 返回值包括:路径序列数组

模型适用范围

简答的BS市场模型下的路径模拟 缺点:对于BS模型无法模拟的市场情况无法融入

{
"version": "NumericalSolution.V202003",
"model": "MCModel",
"function": "getSpotPath",
"parameters": {
"RD": 0.022,
"RF": 0.021,
"Days": 365,
"Spot": 1700,
"Vol": 0.15,
"LimitMoveRate": 0.1,
"TimesOfTrials": 10,
"ID": "ID1"
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 亚式期权(平均价格)

TIP

亚式期权(Asian Option)是指观察期内标的价格均值作为协议价格或者判定价格的一类期权,亚式期权也是一种路径依赖期权。 亚式期权包括:平均协议价,平均价格两种

{
"version": "NumericalSolution.V202003", 
"model": "MCModelPro", 
"function": "getPrice", 
"derivative": 
{"days": "90", 
"window": "AME", 
"statusInit": 0, 
"modelName": "mdoelName", 
"CV": 0.005, 
"SD": 0.0, 
"ID": 1}, 
"marketData":
 {
"spot": 2000.0, "RateD": 0.03, "RateF": 0.0, "vol": 0.1, 
"spot12": 0.0, "RateD12": 0.0, "RateF12": 0.0, "vol12": 0.1, 
"spot2": 0.0, "RateD2": 0.0, "RateF2": 0.0, "vol2": 0.0, 
"spot22": 0.0, "RateD22": 0.0, "RateF22": 0.0, "vol22": 0.0, "Corr": 0.0, 
"dailyMoveLimit": 10000, 
"trailTimes": 20000, 
"daysPerY": 365, 
"marketModel": "BS"
}, 
 "MCCashFlow": 
{
"eventCode": "SYS_arg1=SYS_arg1+SYS_spot;SYS_arg2=SYS_arg2+1;
if(SYS_i>=90 & SYS_arg1/SYS_arg2>2000)
{event.cashFlow=(SYS_arg1/SYS_arg2-2000);event.cashFlowDayi=90;}"
}
}

# 亚式期权(平均协议价格)

TIP

亚式期权(Asian Option)是指观察期内标的价格均值作为协议价格或者判定价格的一类期权,亚式期权也是一种路径依赖期权。 亚式期权包括:平均协议价,平均价格两种

{
"version":"NumericalSolution.V202003",
"model":"MCModel",
"function":"getPrice",
"derivative":
{
"days":365,
"window":"AME",
"statusInit":0,
"ID":1
},
"marketData":
{
"spot":6.7,
"RateD":0.022,
"RateF":0.019,
"vol":0.05,
"dailyMoveLimit":0.1,
"trailTimes":20000,
"marketModel":"BS"
},
"MCCashFlow":
{
"eventCode":
"
if(SYS_i==0)
{SYS_arg1=0; }
/*每天按照1/365的权重做行权判定,并在到期日返回现金流*/
SYS_arg1=SYS_arg1+SYS_spot;
if(SYS_i==365 & SYS_spot>SYS_arg1/365.00)
{event.cashFlow=(SYS_spot-SYS_arg1/365.00);event.cashFlowDayi=365; }
"
}
}

Pro版本

{
"version": "NumericalSolution.V202003", 
"model": "MCModelPro", 
"function": "getPrice", 
"derivative": 
{"days": "90", 
"window": "AME", 
"statusInit": 0, 
"modelName": "mdoelName", 
"CV": 0.005, 
"SD": 0.0, 
"ID": 1}, 
"marketData":
 {
"spot": 2000.0, "RateD": 0.03, "RateF": 0.0, "vol": 0.1, 
"spot12": 0.0, "RateD12": 0.0, "RateF12": 0.0, "vol12": 0.1, 
"spot2": 0.0, "RateD2": 0.0, "RateF2": 0.0, "vol2": 0.0, 
"spot22": 0.0, "RateD22": 0.0, "RateF22": 0.0, "vol22": 0.0, "Corr": 0.0, 
"dailyMoveLimit": 10000, 
"trailTimes": 20000, 
"daysPerY": 365, 
"marketModel": "BS"
}, 
"MCCashFlow": 
{
"eventCode": "SYS_arg1=SYS_arg1+SYS_spot;
if(SYS_i==90 & SYS_spot>SYS_arg1/90.00)
{event.cashFlow = SYS_spot-SYS_arg1/90.00;event.cashFlowDayi=90; }"
}
}

# 区间累计

TIP

区间累计期权(range accrual)

{
"version":"NumericalSolution.V202003",
"model":"MCModel",
"function":"getPrice",
"derivative":
{
"days":365,
"window":"AME",
"statusInit":0,
"ID":1
},
"marketData":
{
"spot":6.7,
"RateD":0.022,
"RateF":0.019,
"vol":0.05,
"dailyMoveLimit":0.1,
"trailTimes":20000,
"marketModel":"BS"
},
"MCCashFlow":
{
"eventCode":
"
if(SYS_i==0)
{SYS_arg1=0; }
if(SYS_spot>6.5 & SYS_spot<6.9 ){SYS_arg1=SYS_arg1+1/365.00;}/*落在Range范围内*/
if(SYS_i==365 & SYS_spot>SYS_arg1/365.00)
{event.cashFlow=SYS_arg1;event.cashFlowDayi=365; }
"
}
}

Pro版本

{
"version": "NumericalSolution.V202003", 
"model": "MCModelPro", 
"function": "getPrice",
 "derivative": 
{"days": "90", "window": "AME", "statusInit": 0,
 "modelName": "mdoelName", 
"CV": 0.001, "SD": 0.0, "ID": 1}, 
"marketData": 
{"spot": 2030.0, "RateD": 0.0, "RateF": 0.0,
 "vol": 0.1, "spot12": 0.0, "RateD12": 0.0, 
"RateF12": 0.0, "vol12": 0.0, "spot2": 0.0, 
"RateD2": 0.0, "RateF2": 0.0, "vol2": 0.0,
 "spot22": 0.0, "RateD22": 0.0, "RateF22": 0.0, 
"vol22": 0.0, "Corr": 0.0, "dailyMoveLimit": 10000, 
"trailTimes": 20000, "daysPerY": 365,
 "marketModel": "BS"
}, 
"MCCashFlow": {"eventCode": "if(SYS_spot>1950 & SYS_spot>2050 )
{SYS_arg1++;}
if(SYS_i>=90) {event.cashFlow=(SYS_arg1/90);event.cashFlowDayi=90;}"
}
}

# 雪球SnowBall

TIP

雪球规定客户在未来时间期限内按照一定的收益率获取利息,同时设置一个敲入、一个敲出价格。敲出一般一个月观察一次,当触碰敲出价格时合约终止,客户按照敲出时的期限长度获取利息收益;敲入一般每天观察一次,当触碰敲入时客户相当于卖出一份看跌期权,客户亏损按照跌幅作为负利息计量。 如下Json文本是一个全量的定义,其他脚本仅给出核心的"MCCashFlow"定义

{
"version":"NumericalSolution.V202003",
"model":"MCModel",
"function":"getPrice",
"derivative":
{
"days":730,
"window":"AME",
"statusInit":0,
"ID":1
},
"marketData":
{
"spot":7244,
"RateD":0.024,
"RateF":0.035,
"vol":0.21,
"dailyMoveLimit":0.1,
"trailTimes":20000,
"marketModel":"BS"
},
"MCCashFlow":
{
"eventCode":
"
event.cashFlow=0;event.cashFlowDayi=0;event.status=0;/*初始化返回的Event,status=0初始;=1敲入;=-1敲出*/
/*敲出*/
if(SYS_spot>=7244*1.03 & SYS_status>-1&(SYS_i%30)==0)/*每30天观察一次*/
{event.cashFlow=SYS_i/365*0.16;event.cashFlowDayi=SYS_i;event.status=-1;}/*雪球向上敲出立刻获得天数对应的收益,年化16%*/
/*敲入*/
if(SYS_spot<=7244*0.75 & SYS_status==0){event.cashFlow=0;event.cashFlowDayi=0;event.status=1;}/*雪球向下敲入,客户卖出看跌期权生效*/
/*到期敲入*/
if(SYS_i==365*2&SYS_spot<7244*0.75&SYS_status==1){event.cashFlow=(SYS_spot/7244-1);event.cashFlowDayi=365*2;event.status=-1;}/*到期且卖出看跌期权生效,无限亏损*/
/*到期未敲入*/
if(SYS_i==365*2&SYS_status==0){event.cashFlow=SYS_i/365*0.16;event.cashFlowDayi=365*2;event.status=-1;}/*到期且未敲入、敲出,年化16%收益*/
"
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰One Touch

TIP

单边触碰期权约定存续期如果发生触碰,买方获得Payoff收益 "statusInit":1

"MCCashFlow":
{
"eventCode":
"
if(SYS_spot>=1970){event.cashFlow=100;event.cashFlowDayi=SYS_i;event.status=-1;}
else{event.cashFlow=0;event.cashFlowDayi=0;event.status=0;}
"
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边不触碰No Touch

TIP

单边不触碰期权约定存续期如果未发生触碰,买方获得Payoff收益 "statusInit":0

"MCCashFlow":
{
"eventCode":
"
event.cashFlow=0;event.cashFlowDayi=0;event.status=1;
if(SYS_spot>=2000 ){event.cashFlow=0;event.cashFlowDayi=0;event.status=-1;}
if(SYS_i==100&SYS_spot<2000&SYS_status==1){event.cashFlow=100;event.cashFlowDayi=100;event.status=-1;}
"
}

# 双边不触碰Double No Touch(pro)

TIP

使用MCS Pro接口。 约定存续期如果双边均未发生触碰,买方获得Payoff收益。 "statusInit":0

{
'version': 'NumericalSolution.V202003', 
'model': 'MCModelPro', 
'function': 'getPrice', 
'derivative': 
{
'days': '365',
'window': 'AME',
'statusInit': 0, 
'modelName': 'mdoelName', 
'CV': 0.01, 
'SD': 0.0001, 
'ID': 1
},
 'marketData': 
{
'spot': 2000.0, 
'RateD': 0.02, 
'RateF': 0.02, 
'vol': 0.16, 
'spot12': 0.0, 
'RateD12': 0.02, 
'RateF12': 0.02, 
'vol12': 0.16, 
'spot2': 0.0, 
'RateD2': 0.0, 
'RateF2': 0.0,
'vol2': 0.0, 
'spot22': 0.0, 
'RateD22': 0.0, 
'RateF22': 0.0, 
'vol22': 0.0, 
'Corr': 0.0, 
'dailyMoveLimit': 10000, 
'trailTimes': 50000, 
'daysPerY': 365, 
'marketModel': 'BS'
}, 
"MCCashFlow":
{
"eventCode":
"
if(SYS_spot>=2200 & SYS_status>=0){event.status=-1;event.cashFlow=1;event.cashFlowDayi=SYS_i;}/*敲入*/
if(SYS_spot<=1800 & SYS_status>=0){event.status=-1;event.cashFlow=1;event.cashFlowDayi=SYS_i;}
"
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰敲出 Knock Out

TIP

单边触碰表示在期权存续期,如果未触碰敲出,到期按照Vanilla期权清算。如果敲出,期权持有方还可以得到约定补偿(Rebate)。 "statusInit":1, if(SYS_spot>=2200 ){event.cashFlow=20:表示敲出后的rebate

"MCCashFlow":
{
"eventCode":
"
event.cashFlow=0;event.cashFlowDayi=0;event.status=1;
if(SYS_spot>=2200 ){event.cashFlow=20;event.cashFlowDayi=100;event.status=-1;}
if(SYS_i==100&SYS_spot<2200&SYS_status==1&SYS_spot>1980){event.cashFlow=SYS_spot-1980;event.cashFlowDayi=100;event.status=-1;}
"
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰敲入Knock In

TIP

单边触碰表示在期权存续期,如果触碰敲入,Vanilla期权生效。如果未敲人,期权持有方还可以得到约定补偿(Rebate)。 "statusInit":0, if(SYS_i==100&SYS_spot<2100&SYS_status==0){event.cashFlow=20:表示未敲入的rebate

{
"version":"NumericalSolution.V202003",
"model":"MCModel",
"function":"getPrice",
"derivative":
{
"days":365,
"window":"AME",
"statusInit":0,
"ID":1
},
"marketData":
{
"spot":1919,
"RateD":0.02,
"RateF":0.02,
"vol":0.06,
"dailyMoveLimit":100,
"trailTimes":20000,
"marketModel":"BS"
},
"MCCashFlow":
{
"eventCode":
"
event.cashFlow=0;event.cashFlowDayi=0;event.status=0;
if(SYS_spot>=1959 ){event.cashFlow=0;event.cashFlowDayi=0;event.status=1;}
if(SYS_i==365&(SYS_spot>=1959 | SYS_status==1)&SYS_spot>1919){event.cashFlow=SYS_spot-1919;event.cashFlowDayi=365;event.status=-1;}
if(SYS_i==365&SYS_spot<1959&SYS_status==0){event.cashFlow=13;/*rebate=13.5*/
event.cashFlowDayi=365;event.status=-1;}
"
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 单边触碰敲入Knock In Delta(pro)

TIP

使用MCS Pro接口计算Delta,避免收敛误差干扰。

{
"version":"init",
"model":"Random",
"function":"initRandomList",
"parameters":
{
"times":10000,
"days":730,
"dual":1
}
}
 {
"version":"NumericalSolution.V202003",
"model":"MCModelPro",
"function":"getPrice",
"derivative":
{
"days":365,
"window":"AME",
"statusInit":0,
"modelName":"mdoelName0814",
"CV":0.01,
"SDl":0.005,
"ID":1
},
"marketData":
{
"spot":2000,
"RateD":0.02,
"RateF":0.02,
"vol":0.06,
"spot12":2002,
"RateD12":0.02,
"RateF12":0.02,
"vol12":0.06,
"spot2":0,
"RateD2":0,
"RateF2":0,
"vol2":0,
"spot22":0,
"RateD22":0,
"RateF22":0,
"vol22":0,
"Corr":1,
"dailyMoveLimit":100,
"trailTimes":20000,
"daysPerY":365,
"marketModel":"BS"
},
"MCCashFlow":
{
"eventCode":
"
if(SYS_spot>=2200){SYS_status=-1;}/*敲出*/
SYS_arg1=0;SYS_arg2=0;
if(SYS_spot>=2000 & SYS_i>=365 & SYS_status>=0){SYS_arg1=(SYS_spot-2000);}
if(SYS_spot12>=2000 & SYS_i>=365 & SYS_status>=0 ){SYS_arg2=(SYS_spot12-2000);}
if(  SYS_i>=365 & SYS_status>=0){event.cashFlow=(SYS_arg2-SYS_arg1)/2;event.cashFlowDayi=365;}
"
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

# 数值解-二叉树

###美式期权 二叉树常被用于美式期权求解,其中二叉树高度最多支持到20层,参数超过20按照20层执行。

{
"version":"NumericalSolution.V202003",
"model":"BinaryTree",
"function":"getGreeks",
"derivative":
{
"CallPut":1,
"Strike":1900,
"DeliveryYears":1,
"ExpiryYears":1,
"ID":1
},
"marketData":
{
"RateD":0.02,
"RateF":0.31,
"Spot":2000,
"Vol":0.05
},
"controlParameters":
{
"forwardDiff":10,
"volDiff":0.01,
"yearDiff":0.00274,
"treeLen":10
}
}

可以使用Python等调用示例代码,也可以通过界面调用,或者通过其他语言(R、Java、C、C++)调用

一组的计算:

{
"version":"NumericalSolution.V202003",
"model":"BinaryTree",
"function":"getGreeksList",
"derivative":
{
"CallPut":[1,1],
"Strike":[1900,1900],
"DeliveryYears":[1,1],
"ExpiryYears":[1,1],
"ID":[1,1]
},
"marketData":
{
"RateD":[0.02,0.02],
"RateF":[0.31,0.31],
"Spot":[2000,2000],
"Vol":[0.05,0.05]
},
"controlParameters":
{
"forwardDiff":[10,10],
"volDiff":[0.01,0.01],
"yearDiff":[0.00274,0.00274],
"treeLen":[10,10]
}
}

# 其他

###曲线流动性校正 { 'version': 'dataStructure.V202001', 'model': 'curve', 'function': 'getAdjustedList', 'marketData': { 'Days': [10, 20, 30, 40, 50, 60, 70, 80], 'Rates': [8, 4, 8, 16, 16, 12, 8, 12] }, 'controlParameters': {'BidAsk': -1, 'Times': 2} }

上次更新: 2022/9/4 下午10:56:52