Added Oil over Oil Volatility as a selectable option. Oil by itself out performs as an indicator over long timeframes. I also ran this in a Python script I built to validate the return profile using CL=F (due to yfinance not having USOIL as a ticker). Excluding the EMA (which matters for this script) you get a return of 72.8 however note the volatility on the combined scenario. Essentially it validates the script will be profitable. Better than buy and hold? Not sure.
Long Results for SPY going back to 0, Sample size: 24 trades
Batting Avg: 0.625
Gain/loss ratio: 2.8692089166896686
Average Gain: 4.184139196337219
Average Loss: -1.4582901830531891
Max Return: 11.456469648562306
Max Loss: -6.071636796151914
Total return over 24 trades: 60.26%
Short Results for SPY going back to 0, Sample size: 24 trades
Batting Avg: 0.75
Gain/loss ratio: 0.5881085471783537
Average Gain: 1.7299946052241066
Average Loss: -2.9416246601487614
Max Return: 6.139772751730832
Max Loss: -14.700454102882887
Total return over 24 trades: 12.54%
Combined L + S Results for SPY going back to 0, Sample size: 48 trades
Batting Avg: 1.375
Gain/loss ratio: 2.86920891668966860.5881085471783537
Average Gain: 5.914133801561326
Average Loss: -4.399914843201951
Max Return: 17.59624240029314
Max Loss: -20.7720908990348
Total return over 48 trades: 72.8%