将字符串 tenor 转换为年份

Convert string tenor to year

我有以下字符串中的男高音(转换为下面的符号)来自掉期曲线:

tenors_str : `1d`6m`1y`1y6m`2y`2y6m`3y`3y6m`4y`4y6m`5y`10y`20y`30y6m

我想创建一个函数来解析这些期限并获得相应的年数。

例如:

我已经开始创建这样的字典了:

tenor_to_year:`d`m`y!(1%365.25;1%12;1f);

但是当字符 dmy

前面有超过 1 个数字时,我无法处理这种情况

我认为这种方法涵盖了您的用例:

f:{sum prd each 2 cut d[`$c]^"F"$c:cut[0,where b|prev b:x in raze string key d:tenor_to_year;x]};

q)f each string tenors_str
0.002737851 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 10 20 30.5