如何在R中用正则表达式解析OCC期权代码并生成指定格式data.table
OCC期权代码正则解析方案
核心思路
OCC期权代码结构固定,通过正则捕获4个对应字段后做格式转换即可生成目标data.table,不需要额外依赖。
正确实现代码
library(data.table) # 测试用OCC代码向量 occ_codes <- c("AAPL220121C00145000", "TSLA220121C01050000", "HD220121C00400000") # 正则捕获4个分组直接生成data.table dt <- as.data.table(strcapture( pattern = "^([A-Za-z]+)(\\d{6})([PC])(\\d{8})$", x = occ_codes, proto = list( Symbol = character(), ExpDate = character(), Type = character(), Strike = character() ) )) # 转换为目标格式 dt[, `:=`( ExpDate = as.Date(ExpDate, "%y%m%d"), Type = fifelse(Type == "C", "call", "put"), Strike = as.numeric(Strike)/1000 )] # 查看结果 print(dt)
输出结果
Symbol ExpDate Type Strike 1: AAPL 2022-01-21 call 145 2: TSLA 2022-01-21 call 1050 3: HD 2022-01-21 call 400
原代码问题说明
原正则未捕获开头的标的代码分组,字段拆分逻辑错误,且没有做日期、期权类型、行权价的格式转换,因此无法得到正确结果。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

