Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np from scipy import stats ### <summary> ### Basic template algorithm simply initializes the date range and cash. This is a skeleton ### framework you can use for designing an algorithm. ### </summary> class BasicTemplateAlgorithm(QCAlgorithm): '''Basic template algorithm simply initializes the date range and cash''' def Initialize(self): '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.''' self.SetStartDate(2018,1, 7) #Set Start Date self.SetEndDate(2018,4,1) #Set End Date self.SetCash(100000) #Set Strategy Cash # Find more symbols here: http://quantconnect.com/data self.AddEquity("ACER", Resolution.Daily) self.AddEquity("SPY", Resolution.Daily) self.Debug("numpy test >>> print numpy.pi: " + str(np.pi)) def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' self.Log(str(self.get_beta('ACER',90))) def get_beta(self, security, period): #Make sure to create dataframe and then get returns to compute slope if not self.Securities.ContainsKey(security):return 'no data' security_data = self.History([security], period, Resolution.Daily) spy_data = self.History(['SPY'],period,Resolution.Daily) if 'close' not in security_data:return 'no close' y = security_data['close'].pct_change().dropna().values x = spy_data['close'].pct_change().dropna().values slope, intercept, r_value, p_value, std_err = stats.linregress(x,y) return r_value * ((np.std(y))/(np.std(x)))