| Overall Statistics |
|
Total Trades 72 Average Win 13.32% Average Loss -10.21% Compounding Annual Return 45.006% Drawdown 66.300% Expectancy 0.229 Net Profit 69.440% Sharpe Ratio 1.298 Probabilistic Sharpe Ratio 33.880% Loss Rate 47% Win Rate 53% Profit-Loss Ratio 1.30 Alpha 1.566 Beta 1.198 Annual Standard Deviation 1.376 Annual Variance 1.894 Information Ratio 1.19 Tracking Error 1.346 Treynor Ratio 1.491 Total Fees $20721.71 Estimated Strategy Capacity $23000.00 Lowest Capacity Asset ABP RXBFGHC4AV6T |
from AlgorithmImports import *
class USEnergyDataAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 1)
self.SetEndDate(2021, 6, 1)
self.SetCash(100000)
# Requesting data
self.symbol = self.AddEquity("AXAS", Resolution.Daily).Symbol
us_energy_symbol = self.AddData(USEnergy, USEnergy.Petroleum.UnitedStates.WeeklyNetImportsOfTotalPetroleumProducts).Symbol
# Historical data
history = self.History(USEnergy, us_energy_symbol, 60, Resolution.Daily)
self.Log(f"We got {len(history)} items from our history request")
# Get latest value for net imports of petroleum products
self.previous_value = history.loc[us_energy_symbol].values[-1, -1]
def OnData(self, data):
# Gather the current net imports of petroleum products
points = data.Get(USEnergy)
current_value = None
for point in points.Values:
current_value = point.Value
if current_value is None:
return
# Buy when net imports of petroleum products are increasing
self.Debug(f"{current_value} :: {self.previous_value}" )
if current_value > self.previous_value:
self.SetHoldings(self.symbol, 1)
# Short sell when net imports of petroleum products are decreasing
elif current_value < self.previous_value:
self.SetHoldings(self.symbol, -1)
self.previous_value = current_value