def run(self): # Fetch and select timeseries. self.ts = pf.fetch_timeseries(self.symbol, use_cache=self.options['use_cache']) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, use_adj=self.options['use_adj']) # Add technical indicator: 200 day sma regime filter. self.ts['regime'] = pf.CROSSOVER(self.ts, timeperiod_fast=1, timeperiod_slow=200) # Add technical indicators: X day high, and X day low. self.ts['period_high'] = pd.Series(self.ts.close).rolling( self.options['period']).max() self.ts['period_low'] = pd.Series(self.ts.close).rolling( self.options['period']).min() # Finalize timeseries. self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) # Create tlog and dbal objects. self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() # Run algo, get logs, and get stats. self._algo() self._get_logs() self._get_stats()
def run(self): self.ts = pf.fetch_timeseries(self.symbol) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, use_adj=True) # Add technical indicator: 200 sma regime filter self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=1, timeperiod_slow=200) # Add technical indicator: instrument risk, i.e. annual std self.ts['vola'] = \ pf.VOLATILITY(self.ts, lookback=20, time_frame='yearly') # Add technical indicator: X day sma sma = SMA(self.ts, timeperiod=self.sma) self.ts['sma'] = sma # Add technical indicator: X day high, and X day low period_high = pd.Series(self.ts.close).rolling(self.period).max() period_low = pd.Series(self.ts.close).rolling(self.period).min() self.ts['period_high'] = period_high self.ts['period_low'] = period_low self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo()
def run(self): self.ts = pf.fetch_timeseries(self.symbol) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, self.use_adj) # Add technical indicator: day sma regime filter self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=1, timeperiod_slow=self.sma_period, band=self.percent_band) self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo()
def run(self): self.ts = pf.fetch_timeseries(self.symbol) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end) # add regime filter self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=self.timeperiod_fast, timeperiod_slow=self.timeperiod_slow, band=self.percent_band) self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo()
def run(self): self._ts = pf.fetch_timeseries(self._symbol) self._ts = pf.select_tradeperiod(self._ts, self._start, self._end, self._use_adj) # Add technical indicator: day sma sma = SMA(self._ts, timeperiod=self._sma_period) self._ts['sma'] = sma self._tlog = pf.TradeLog() self._dbal = pf.DailyBal() # add S&P500 200 sma regime filter ts = pf.fetch_timeseries('^GSPC') ts = pf.select_tradeperiod(ts, self._start, self._end, False) self._ts['regime'] = \ pf.CROSSOVER(ts, timeperiod_fast=1, timeperiod_slow=200) self._algo()
def run(self): self.portfolio = pf.Portfolio() self.ts = self.portfolio.fetch_timeseries( self.symbols, self.start, self.end, use_cache=self.options['use_cache'], use_adj=self.options['use_adj']) # Add S&P500 200 sma regime filter ts = pf.fetch_timeseries('^GSPC') ts = pf.select_tradeperiod(ts, self.start, self.end, use_adj=False) self.ts['regime'] = \ pf.CROSSOVER(ts, timeperiod_fast=1, timeperiod_slow=200, band=3.5) # Add calendar columns self.ts = self.portfolio.calendar(self.ts) # Add technical indicator Momenteum for all symbols in portfolio. def _momentum(ts, ta_param, input_column): return pf.MOMENTUM(ts, lookback=ta_param, time_frame='monthly', price=input_column, prevday=False) lookbacks = range(3, 18 + 1) for lookback in lookbacks: self.ts = self.portfolio.add_technical_indicator( self.ts, ta_func=_momentum, ta_param=lookback, output_column_suffix='mom' + str(lookback), input_column_suffix='close') self.ts, self.start = self.portfolio.finalize_timeseries( self.ts, self.start) self.portfolio.init_trade_logs(self.ts) self._algo() self._get_logs() self._get_stats()
def run(self): self.ts = pf.fetch_timeseries(self.symbol) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end) # add regime filter self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=self.timeperiod_fast, timeperiod_slow=self.timeperiod_slow, band=self.percent_band) # Add technical indicator: volatility self.ts['vola'] = pf.VOLATILITY(self.ts) self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo()
def run(self): # Fetch and selct timeseries self.ts = pf.fetch_timeseries(self.symbol, use_cache=self.options['use_cache']) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, self.options['use_adj']) # Add technical indicator: day sma regime filter. self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=50, timeperiod_slow=200) # Finalize timeseries self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo() self._get_logs() self._get_stats()
def run(self): self.ts = pf.fetch_timeseries(self.symbol) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, use_adj=False) # Add technical indicator: 200 sma regime filter self.ts['regime'] = \ pf.CROSSOVER(self.ts, timeperiod_fast=1, timeperiod_slow=200) # Add technical indicator: X day high, and X day low period_high = pd.Series(self.ts.close).rolling(self.period).max() period_low = pd.Series(self.ts.close).rolling(self.period).min() self.ts['period_high'] = period_high self.ts['period_low'] = period_low self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo()
def run(self): self.ts = pf.fetch_timeseries(self.symbol, use_cache=self.options['use_cache']) self.ts = pf.select_tradeperiod(self.ts, self.start, self.end, self.options['use_adj']) # Add technical indicator: day sma self.ts['sma'] = SMA(self.ts, timeperiod=self.options['sma_period']) # add S&P500 200 sma regime filter ts = pf.fetch_timeseries('^GSPC') ts = pf.select_tradeperiod(ts, self.start, self.end, use_adj=False) self.ts['regime'] = \ pf.CROSSOVER(ts, timeperiod_fast=1, timeperiod_slow=200) self.ts, self.start = pf.finalize_timeseries(self.ts, self.start) self.tlog = pf.TradeLog(self.symbol) self.dbal = pf.DailyBal() self._algo() self._get_logs() self._get_stats()
def _crossover(ts, ta_param, input_column): return pf.CROSSOVER(ts, timeperiod_fast=1, timeperiod_slow=200, price=input_column, prevday=False)