A:天软已提供相关指标,如下:
期权主力合约
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
说明:返回指定日指定标的的平值合约,只适用于日线,规则为:
行权价等于或最接近标的证券现价的合约(行权价格=市价)
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-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
说明:返回指定日指定标的的虚值合约,只适用于日线,规则为:
行权价高于标的证券现价的合约(行权价格>市价)
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| 返回值 | array | 指定标的的虚值合约
|
范例:
//"SH510050"在20210331日的认购的虚值合约
return OptionVirtualValueID("SH510050",20210331T,0);
期权实值合约
OptionRealValueID
定义:OptionRealValueID(IndexId:string,EndT:datetime,OptionType:Integer):array
说明:返回指定日指定标的的实值合约,只适用于日线,规则为:
行权价低于标的证券现价的合约(行权价格<市价)
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| 返回值 | array | 指定标的的实值合约
|
范例:
//"SH510050"在20210331日的认购的实值合约
return OptionRealValueID("SH510050",20210331T,0);
是否平值合约
OptionIsFlatValueID
定义:OptionIsFlatValueID(OptionId:string,EndT:datetime):bool
说明:指定日指定期权代码是否为平值合约
参数:
| 名称 | 类型 | 说明
|
|---|
| OptionId | string | 期权代码
|
| EndT | datetime | 截止日期
|
| 返回值 | bool | 指定期权代码是否平值合约
|
范例:
//"OP10003265 50ETF购4月3600"在20210331日是否平值合约
return OptionIsFlatValueID("OP10003265",20210331T);
//结果:1
OptionIsFlatValueID2
定义:OptionIsFlatValueID2(EndT:datetime):bool
说明:指定日指定期权代码是否为平值合约,与系统参数pn_stock相关
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| 返回值 | bool | 指定期权代码是否平值合约
|
范例:
//"OP10003265 50ETF购4月3600"在20210331日是否平值合约
setsysparam(pn_stock(),"OP10003265");
return OptionIsFlatValueID2(20210331T);
//结果:1
是否实值合约
OptionIsRealValueID
定义:OptionIsRealValueID(OptionId:string,EndT:datetime):bool
说明:指定日指定期权代码是否为实值合约
参数:
| 名称 | 类型 | 说明
|
|---|
| OptionId | string | 期权代码
|
| EndT | datetime | 截止日期
|
| 返回值 | bool | 指定期权代码是否实值合约
|
范例:
//"OP10003265 50ETF购4月3600"在20210331日是否实值合约
return OptionIsRealValueID("OP10003265",20210331T);
//结果:0
OptionIsRealValueID2
定义:OptionIsRealValueID2(EndT:datetime):bool
说明:指定日指定期权代码是否为实值合约,与系统参数pn_stock相关
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| 返回值 | bool | 指定期权代码是否实值合约
|
范例:
//"OP10003265 50ETF购4月3600"在20210331日是否实值合约
setsysparam(pn_stock(),"OP10003265");
return OptionIsRealValueID2(20210331T);
//结果:0
是否虚值合约
OptionIsVirtualValueID
定义:OptionIsVirtualValueID(OptionId:string,EndT:datetime):bool
说明:指定日指定期权代码是否为虚值合约
参数:
| 名称 | 类型 | 说明
|
|---|
| OptionId | string | 期权代码
|
| EndT | datetime | 截止日期
|
| 返回值 | bool | 指定期权代码是否虚值合约
|
范例:
//"OP10003265 50ETF购4月3600"在20210331日是否虚值合约
return OptionIsVirtualValueID("OP10003265",20210331T);
//结果:0
OptionIsVirtualValueID2
定义:OptionIsVirtualValueID2(EndT:datetime):bool
说明:指定日指定期权代码是否为虚值合约
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| 返回值 | 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)昨日成交量最大
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
0:昨日持仓量
1:昨日成交量
|
| 返回值 | string | 指定标的的期权主力合约
|
范例:
//"SH510050"在20210331日的期权主力合约
return OptionZLId("SH510050",20210331T,0,-1);
//结果:OP10003266
OptionZLId2
定义:OptionZLId2(EndT:datetime,OptionType,CheckType:Integer):string
说明:返回指定日指定标的的期权主力合约,与系统参数pn_stock相关,只适用于日线,规则为:
1)昨日持仓量最大
2)昨日成交量最大
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
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)昨日成交量第二大
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
0:昨日持仓量
1:昨日成交量
|
| 返回值 | string | 指定标的的期权次主力合约
|
范例:
//"SH510050"在20210331日的期权次主力合约
return OptionCZLId("SH510050",20210331T,0,-1);
//结果:OP10003273
OptionCZLId2
定义:OptionCZLId2(EndT:datetime,OptionType,CheckType:Integer):string
说明:返回指定日指定标的的期权次主力合约,与系统参数Pn_stock有关,只适用于日线,规则为:
1)昨日持仓量第二大
2)昨日成交量第二大
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
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)昨日成交量最大
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
0:昨日持仓量
1:昨日成交量
|
| 返回值 | string | 指定标的的期权平值主力合约
|
范例:
//"SH510050"在20210331日的期权平值主力合约
return OptionFlatZLId("SH510050",20210331T,0,0);
//结果:OP10003265
OptionFlatZLId2
定义:OptionFlatZLId2(EndT:datetime,OptionType,CheckType:Integer):string
说明:返回指定日指定标的的期权平值主力合约,与系统参数Pn_stock有关,只适用于日线,规则为:
1)昨日持仓量最大
2)昨日成交量最大
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
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)昨日成交量第二大
参数:
| 名称 | 类型 | 说明
|
|---|
| IndexId | string | 标的代码
|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
0:昨日持仓量
1:昨日成交量
|
| 返回值 | string | 指定标的的期权平值次主力合约
|
范例:
//"SH510050"在20210331日的期权平值次主力合约
return OptionFlatCZLId("SH510050",20210331T,0,0);
//结果:OP10003274
OptionFlatCZLId2
定义:OptionFlatCZLId2(EndT:datetime,OptionType,CheckType:Integer):string
说明:返回指定日指定标的的期权平值次主力合约,与系统参数pn_stock相关,只适用于日线,规则为:
1)昨日持仓量第二大
2)昨日成交量第二大
参数:
| 名称 | 类型 | 说明
|
|---|
| EndT | datetime | 截止日期
|
| OptionType | Integer | 期权类型:
-1:所有
0:认购
1:认沽
|
| CheckType | Integer | 筛选类型:
0:昨日持仓量
1:昨日成交量
|
| 返回值 | string | 指定标的的期权平值次主力合约
|
范例:
//"SH510050"在20210331日的期权平值次主力合约
setsysparam(pn_stock(),"SH510050");
return OptionFlatCZLId2(20210331T,0,0);
//结果:OP10003274