Оформите торговое правило в функцию. Далее эту функцию просто натравите на данные через
apply(data, 1, function(x) {
fun_name(options_data[x, ])
})
Или так
foreach(i=nrow(options_data), .combine=rbind) %do% {
fun_name(options_data[i, ]) %>% as.data.frame(.)
}
И еще - перепишите торговое правило через ifelse() функции (вместо базовых if {} else {} конструкций)