用python 自动生成期权行权到期日的算法

论坛 期权论坛 期权     
期权匿名问答   2022-2-18 13:12   15478   0
在个人量化平台搭建中,上篇( 阿岛格:2022年股市法定交易日期 )介绍了自动生成获取新一年的交易日期数列的简单python方法,本文介绍自动生成期权行权到期日的方法。
到期日是指期权合约到期的日子。期权行权的意思就是期权的权利方(买方)按照期权合约约定的时间、价格(执行价)和方式来行使权利。
在期权中,美式期权与欧式期权的行权日是有区别的,vix.shtml" target="_blank" class="relatedlink">50ETF期权是欧式期权,可以选择在到期日是否行权。而美式期权,在美式期权中期权买方可以在到期日以及到期日之前的任何一个工作日要求进行行权。
期权到期日是期权投资(也是在BS公式及希腊值计算中)非常重要和基本的时间参数。
期权交易行权到期日,例如上证50etf期权,到期日是到期月份的第四个星期三(遇法定节假日顺延)。由于每年每月的到期日都可能变化,需要一个自动生成到期日的算法,使得量化平台实现自动的功能。
下面以上证50etf期权为例,介绍用python的算法自动生成到期日(expire day)。
import numpy as np
import pandas as pd
import datetime as dt

tradeDateNp=np.array(tradeDate) # tradeDate 在‘阿岛格:2022年股市法定交易日期‘已经介绍的方法

def get_ExpireWeek_of_month(year, month, day):
    end = int(dt.datetime(year, month, day).strftime("%W"))
    begin = int(dt.datetime(year, month, 1).strftime("%W"))
    expireWeek=end - begin + 1
    #if first day of the month is great equal than Thirsday,expireWeek is 5th week, not 4th week, week 1,2,3,4,5 ->0,1,2,3,4
    #keep 4th week (expireWeek=4)as expire week
    if dt.datetime(year, month, 1).isoweekday()>=4:
        expireWeek=expireWeek-1
   
    return expireWeek

def getExpireDateList():
    tdf=pd.DataFrame(tradeDate, columns=['tradeDate'])
    tdf['dt']=tdf['tradeDate'].apply(lambda df: dt.datetime.strptime(df,'%Y-%m-%d'))
    tdf['wday']=tdf['dt'].apply(lambda df: df.isoweekday())
    tdf['wth']=tdf['dt'].apply(lambda df: get_ExpireWeek_of_month(df.year,df.month,df.day))
    expDate=tdf[(tdf['wth']==4)&(tdf['wday']==3)]['tradeDate'].values
    return expDate

if __name__=='__main__':
    e=getExpireDateList()
    print "',\n'".join(e)通过上面简单方法,可以得到50ETF历史至2022年底所有的到期日,如下:
expDate=[
        '2015-01-28',
        '2015-02-25',
        '2015-03-25',
        '2015-04-22',
        '2015-05-27',
        '2015-06-24',
        '2015-07-22',
        '2015-08-26',
        '2015-09-23',
        '2015-10-28',
        '2015-11-25',
        '2015-12-23',
        '2016-01-27',
        '2016-02-24',
        '2016-03-23',
        '2016-04-27',
        '2016-05-25',
        '2016-06-22',
        '2016-07-27',
        '2016-08-24',
        '2016-09-28',
        '2016-10-26',
        '2016-11-23',
        '2016-12-28',
        '2017-01-25',
        '2017-02-22',
        '2017-03-22',
        '2017-04-26',
        '2017-05-24',
        '2017-06-28',
        '2017-07-26',
        '2017-08-23',
        '2017-09-27',
        '2017-10-25',
        '2017-11-22',
        '2017-12-27',
        '2018-01-24',
        '2018-02-28',
        '2018-03-28',
        '2018-04-25',
        '2018-05-23',
        '2018-06-27',
        '2018-07-25',
        '2018-08-22',
        '2018-09-26',
        '2018-10-24',
        '2018-11-28',
        '2018-12-26',
        '2019-01-23',
        '2019-02-27',
        '2019-03-27',
        '2019-04-24',
        '2019-05-22',
        '2019-06-26',
        '2019-07-24',
        '2019-08-28',
        '2019-09-25',
        '2019-10-23',
        '2019-11-27',
        '2019-12-25',
        '2020-01-22',
        '2020-02-26',
        '2020-03-25',
        '2020-04-22',
        '2020-05-27',
        '2020-06-24',
        '2020-07-22',
        '2020-08-26',
        '2020-09-23',
        '2020-10-28',
        '2020-11-25',
        '2020-12-23',
        '2021-01-27',
        '2021-02-24',
        '2021-03-24',
        '2021-04-28',
        '2021-05-26',
        '2021-06-23',
        '2021-07-28',
        '2021-08-25',
        '2021-09-22',
        '2021-10-27',
        '2021-11-24',
        '2021-12-22',
        '2022-01-26',
        '2022-02-23',
        '2022-03-23',
        '2022-04-27',
        '2022-05-25',
        '2022-06-22',
        '2022-07-27',
        '2022-08-24',
        '2022-09-28',
        '2022-10-26',
        '2022-11-23',
        '2022-12-28'
        ]

朋友如果对你有帮助,请点赞,给予支持鼓励呵!

参考:

  • 上篇:  阿岛格:2022年股市法定交易日期
  • 阿岛格专栏:低门槛搭建个人量化平台
  • 低门槛搭建你的个人量化平台-演示
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP