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)