我有一个这样的期权数据集:
head(TNX.ATM)
date exdate impl_volatility moneyness
1 1996-09-03 1996-12-21 0.192926 0.9431225
3 1996-09-03 1997-03-22 0.185357 1.0519443
5 1996-09-03 1996-10-19 0.267567 0.9068485
6 1996-09-03 1997-03-22 0.190826 0.7980267
7 1996-09-03 1997-03-22 0.187024 0.8705746
11 1996-09-03 1997-03-22 0.181079 1.0156703
tail(TNX.ATM)
date exdate impl_volatility moneyness
424674 2009-10-30 2010-03-20 0.682929 1.7688679
424675 2009-10-30 2010-03-20 1.394789 0.5159198
424680 2009-10-30 2010-03-20 0.571662 1.5477594
424681 2009-10-30 2010-03-20 0.648230 1.6951651
424693 2009-10-30 2010-06-19 NA 1.9162736
424700 2009-10-30 2010-06-19 NA 1.8425708
其中exdate是失效日期。
我每个月都要提取与货币性最接近1的到期日(即过期-日期)最接近1个月的期权(即行)相对应的impl_volatility的值。
如果可能的话,只要间隔[0.95,1.05]中不包含金钱或间隔[20days,40days]中不包含到期,我还希望将输出留空,因为获得的值将不代表我在寻找什么。
我还想将提取的值放在一个新的数据集中,其中列日期为month-year,而在一个名为ATM的列中提取impl_volatility。
有一个紧凑的方法可以做到吗?
任何帮助将不胜感激。