estimator creates cache directory if it doesn't exist