FAQ > 金融建模 > 建模问题 > 期权相关

Q:如何获取期权主力、平值、虚值与实值合约代码?    

  • A:天软已提供相关指标,如下:
    指标模型说明
    主力合约OptionZLId3Q:期权主力合约算法说明
    平值合约OptionFlatValueId行权价等于或最接近标的证券现价的合约
    实值合约OptionRealValueID行权价低于标的证券现价的合约
    虚值合约OptionVirtualValueID行权价高于标的证券现价的合约
    是否平值合约OptionIsFlatValueID
    OptionIsFlatValueID2
    指定期权代码是否为平值合约
    是否实值合约OptionIsRealValueID
    OptionIsRealValueID2
    指定期权代码是否为实值合约
    是否虚值合约OptionIsVirtualValueID
    OptionIsVirtualValueID2
    指定期权代码是否为虚值合约

    期权主力合约
    OptionZLId3
    算法说明
    模型中提供了两种算法:
    算法一:近月合约,适用所有期权
    选取最近到期日且满足到期日大于等于N日的期权合约序列,即若近月到期日与指定日区间天数小于N日,则判断次近月,依此类推,直到满足到期天数>=N日;
    算法二:标的主力线合约,仅适用商品期货期权
    期货期权标的(商品期货)的主力线对应的当前实际合约作为标的的期权合约序列,

    通过上述算法逻辑筛选出期权样本组后,再根据选择的期权类型(认购、认沽、所有)与期权合约类型(所有、平值、实值、虚值)以及对应的档位,最后筛选出符合条件的期权序列作为指定日期权主力。
    范例
    //取50ETF期权在指定日的期权主力(近月算法)序列
      setsysparam(pn_stock(),"SH510050");
      return OptionZLId3(20251112T);

    //取50ETF期权在指定日的期权主力(近月算法,大于等于5个交易日的近月合约)序列
      setsysparam(pn_stock(),"SH510050");
      stocks:= OptionZLId3(20251120T,1,5);
      return stocks;

    期权平值合约
    OptionFlatValueId
    定义:OptionCZLId(IndexId:string,EndT:datetime,OptionType:Integer):array
    说明:返回指定日指定标的的平值合约,只适用于日线,规则为:
     行权价等于或最接近标的证券现价的合约(行权价格=市价)
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    返回值array指定标的的平值合约

    范例
     //"SH510050"在20210331日的认购的期权平值合约
     return OptionFlatValueId("SH510050",20210331T,0);
     //结果:array("OP10003207","OP10002865","OP10003330","OP10003265")

    期权虚值合约
    OptionVirtualValueID
    定义:OptionVirtualValueID(IndexId:string,EndT:datetime,OptionType:Integer):array
    说明:返回指定日指定标的的虚值合约,只适用于日线,规则为:
      行权价高于标的证券现价的合约(行权价格>市价)
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    返回值array指定标的的虚值合约

    范例
     //"SH510050"在20210331日的认购的虚值合约
     return OptionVirtualValueID("SH510050",20210331T,0);

    期权实值合约
    OptionRealValueID
    定义:OptionRealValueID(IndexId:string,EndT:datetime,OptionType:Integer):array
    说明:返回指定日指定标的的实值合约,只适用于日线,规则为:
      行权价低于标的证券现价的合约(行权价格<市价)
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    返回值array指定标的的实值合约

    范例
     //"SH510050"在20210331日的认购的实值合约
     return OptionRealValueID("SH510050",20210331T,0);

    是否平值合约
    OptionIsFlatValueID
    定义:OptionIsFlatValueID(OptionId:string,EndT:datetime):bool
    说明:指定日指定期权代码是否为平值合约
    参数
    名称类型说明
    OptionIdstring期权代码
    EndTdatetime截止日期
    返回值bool指定期权代码是否平值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否平值合约
     return OptionIsFlatValueID("OP10003265",20210331T);
     //结果:1

    OptionIsFlatValueID2
    定义:OptionIsFlatValueID2(EndT:datetime):bool
    说明:指定日指定期权代码是否为平值合约,与系统参数pn_stock相关
    参数
    名称类型说明
    EndTdatetime截止日期
    返回值bool指定期权代码是否平值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否平值合约
     setsysparam(pn_stock(),"OP10003265");
     return OptionIsFlatValueID2(20210331T);
     //结果:1

    是否实值合约
    OptionIsRealValueID
    定义:OptionIsRealValueID(OptionId:string,EndT:datetime):bool
    说明:指定日指定期权代码是否为实值合约
    参数
    名称类型说明
    OptionIdstring期权代码
    EndTdatetime截止日期
    返回值bool指定期权代码是否实值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否实值合约
     return OptionIsRealValueID("OP10003265",20210331T);
     //结果:0

    OptionIsRealValueID2
    定义:OptionIsRealValueID2(EndT:datetime):bool
    说明:指定日指定期权代码是否为实值合约,与系统参数pn_stock相关
    参数
    名称类型说明
    EndTdatetime截止日期
    返回值bool指定期权代码是否实值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否实值合约
     setsysparam(pn_stock(),"OP10003265");
     return OptionIsRealValueID2(20210331T);
     //结果:0

    是否虚值合约
    OptionIsVirtualValueID
    定义:OptionIsVirtualValueID(OptionId:string,EndT:datetime):bool
    说明:指定日指定期权代码是否为虚值合约
    参数
    名称类型说明
    OptionIdstring期权代码
    EndTdatetime截止日期
    返回值bool指定期权代码是否虚值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否虚值合约
     return OptionIsVirtualValueID("OP10003265",20210331T);
     //结果:0

    OptionIsVirtualValueID2
    定义:OptionIsVirtualValueID2(EndT:datetime):bool
    说明:指定日指定期权代码是否为虚值合约
    参数
    名称类型说明
    EndTdatetime截止日期
    返回值bool指定期权代码是否虚值合约

    范例
     //"OP10003265 50ETF购4月3600"在20210331日是否虚值合约
     SetSysParam(pn_stock(),"OP10003265");
     return OptionIsVirtualValueID2(20210331T);
     //结果:0


    20251119之前的旧主力合约算法模型说明
    旧算法原期权主力合约(按成交量,持仓量判断)的相关函数不再维护,与新算法的区别
    算法区别
    1、原算法中主要以昨日持仓量、成交量最大的合约进行判定,而新算法中以期权标的的近月合约或标的的主力合约对应的期权进行判断。
    2、原算法中,先筛选出平值或虚值等类型合约,然后再进行持仓量等判断;而新算法中是先找出近月或标的主力合约期权序列,再判断平值或虚值。

    旧算法相关函数见下表:
    指标模型说明
    主力合约OptionZLId
    OptionZLId2
    昨日持仓量/成交量最大的合约
    次主力合约OptionCZLId
    OptionCZLId2
    昨日持仓量/成交量第二大的合约
    平值主力合约OptionFlatZLId
    OptionFlatZLId2
    平值合约中的主力合约
    平值次主力合约OptionFlatCZLId
    OptionFlatCZLId2
    平值合约中的次主力合约

    期权主力合约
    OptionZLId
    定义:OptionZLId(IndexId:string,EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权主力合约,只适用于日线,规则为:
         1)昨日持仓量最大
         2)昨日成交量最大
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权主力合约

    范例
     //"SH510050"在20210331日的期权主力合约
     return OptionZLId("SH510050",20210331T,0,-1);
     //结果:OP10003266

    OptionZLId2
    定义:OptionZLId2(EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权主力合约,与系统参数pn_stock相关,只适用于日线,规则为:
         1)昨日持仓量最大
         2)昨日成交量最大
    参数
    名称类型说明
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权主力合约

    范例
     //"SH510050"在20210331日的期权主力合约
     setsysparam(pn_stock(),"SH510050");
     return OptionZLId2(20210331T,0,-1);
     //结果:OP10003266

    期权次主力合约
    OptionCZLId
    定义:OptionCZLId(IndexId:string,EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权次主力合约,只适用于日线,规则为:
         1)昨日持仓量第二大
         2)昨日成交量第二大
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权次主力合约

    范例
     //"SH510050"在20210331日的期权次主力合约
     return OptionCZLId("SH510050",20210331T,0,-1);
     //结果:OP10003273

    OptionCZLId2
    定义:OptionCZLId2(EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权次主力合约,与系统参数Pn_stock有关,只适用于日线,规则为:
         1)昨日持仓量第二大
         2)昨日成交量第二大
    参数
    名称类型说明
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权次主力合约

    范例
     //"SH510050"在20210331日的期权次主力合约
     setsysparam(pn_stock(),'SH510050');
     return OptionCZLId2(20210331T,0,-1);
     //结果:OP10003273


    期权平值主力合约
    OptionFlatZLId
    定义:OptionFlatZLId(IndexId:string,EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权平值主力合约,只适用于日线,规则为:
         1)昨日持仓量最大
         2)昨日成交量最大
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权平值主力合约

    范例
     //"SH510050"在20210331日的期权平值主力合约
     return OptionFlatZLId("SH510050",20210331T,0,0);
     //结果:OP10003265

    OptionFlatZLId2
    定义:OptionFlatZLId2(EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权平值主力合约,与系统参数Pn_stock有关,只适用于日线,规则为:
         1)昨日持仓量最大
         2)昨日成交量最大
    参数
    名称类型说明
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权平值主力合约

    范例
     //"SH510050"在20210331日的期权平值主力合约
     setsysparam(pn_stock(),"SH510050");
     return OptionFlatZLId2(20210331T,0,0);
     //结果:OP10003265

    期权平值次主力合约
    OptionFlatCZLId
    定义:OptionFlatCZLId(IndexId:string,EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权平值次主力合约,只适用于日线,规则为:
         1)昨日持仓量第二大
         2)昨日成交量第二大
    参数
    名称类型说明
    IndexIdstring标的代码
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权平值次主力合约

    范例
     //"SH510050"在20210331日的期权平值次主力合约
     return OptionFlatCZLId("SH510050",20210331T,0,0);
     //结果:OP10003274

    OptionFlatCZLId2
    定义:OptionFlatCZLId2(EndT:datetime,OptionType,CheckType:Integer):string
    说明:返回指定日指定标的的期权平值次主力合约,与系统参数pn_stock相关,只适用于日线,规则为:
         1)昨日持仓量第二大
         2)昨日成交量第二大
    参数
    名称类型说明
    EndTdatetime截止日期
    OptionTypeInteger期权类型:
     -1:所有
     0:认购
     1:认沽
    CheckTypeInteger筛选类型:
     0:昨日持仓量
     1:昨日成交量
    返回值string指定标的的期权平值次主力合约

    范例
     //"SH510050"在20210331日的期权平值次主力合约
     setsysparam(pn_stock(),"SH510050");
     return OptionFlatCZLId2(20210331T,0,0);
     //结果:OP10003274