If using datasets, are you suggesting simply loading the dataset, and (for the backtest) looping through it, and then retrieving individual values via dataVar/dataInt functions?

As for the greeks, my thought was that it may be beneficial to store greeks to speed up the backtest. Furthermore, I already have a dataset containing those, as well as some other pieces of information obtained from the broker, so I was considering testing a few things using those. Can you explain your thoughts why you would prefer to calculate the greeks on the fly?