| Overall Statistics |
|
Total Orders 1 Average Win 0% Average Loss 0% Compounding Annual Return 21.219% Drawdown 28.700% Expectancy 0 Start Equity 100000 End Equity 121261.98 Net Profit 21.262% Sharpe Ratio 0.657 Sortino Ratio 0.576 Probabilistic Sharpe Ratio 32.825% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.024 Beta 0.967 Annual Standard Deviation 0.274 Annual Variance 0.075 Information Ratio 0.354 Tracking Error 0.052 Treynor Ratio 0.186 Total Fees $1.72 Estimated Strategy Capacity $2600000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 0.28% |
from joblib import Parallel, delayed
import numpy as np
from AlgorithmImports import *
class ParallelProcessingAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 1)
self.SetEndDate(2021, 1, 1)
self.SetCash(100000)
self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol
def parallel_calculation(self, data_chunk):
return np.mean(data_chunk)
def OnData(self, data):
if not self.Portfolio.Invested:
history = self.History(self.spy, 100, Resolution.Daily)
data_chunks = np.array_split(history['close'].values, 4)
# Use threading backend
results = Parallel(n_jobs=2, backend="threading")(
delayed(self.parallel_calculation)(chunk)
for chunk in data_chunks
)
if np.mean(results) > history['close'].iloc[-1]:
self.SetHoldings(self.spy, 1.0)