将字符串 tenor 转换为年份
Convert string tenor to year
我有以下字符串中的男高音(转换为下面的符号)来自掉期曲线:
tenors_str : `1d`6m`1y`1y6m`2y`2y6m`3y`3y6m`4y`4y6m`5y`10y`20y`30y6m
我想创建一个函数来解析这些期限并获得相应的年数。
例如:
1d
应该是 1/365.25
6m
应该是 0.5
1y
应该是 1.0
1y6m
应该是 1.5
10y
应该是 10.0
我已经开始创建这样的字典了:
tenor_to_year:`d`m`y!(1%365.25;1%12;1f);
但是当字符 d
、m
或 y
前面有超过 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
我有以下字符串中的男高音(转换为下面的符号)来自掉期曲线:
tenors_str : `1d`6m`1y`1y6m`2y`2y6m`3y`3y6m`4y`4y6m`5y`10y`20y`30y6m
我想创建一个函数来解析这些期限并获得相应的年数。
例如:
1d
应该是 1/365.256m
应该是 0.51y
应该是 1.01y6m
应该是 1.510y
应该是 10.0
我已经开始创建这样的字典了:
tenor_to_year:`d`m`y!(1%365.25;1%12;1f);
但是当字符 d
、m
或 y
我认为这种方法涵盖了您的用例:
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