コード例 #1
0
    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()
コード例 #2
0
ファイル: strategy.py プロジェクト: alialamiidrissi/pinkfish
    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()
コード例 #3
0
    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 calendar columns
        self.ts = pf.calendar(self.ts)

        # Add momentum indicator for 3...18 months
        lookbacks = range(3, 18 + 1)
        for lookback in lookbacks:
            self.ts['mom' + str(lookback)] = pf.MOMENTUM(self.ts,
                                                         lookback=lookback,
                                                         time_frame='monthly',
                                                         price='close',
                                                         prevday=False)

        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()
コード例 #4
0
    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 day sma
        sma200 = SMA(self._ts, timeperiod=200)
        self._ts['sma200'] = sma200

        # 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._dbal = pf.DailyBal()

        self._algo()
コード例 #5
0
ファイル: benchmark.py プロジェクト: rahulmr/pinkfish
    def run(self):
        self.ts = pf.fetch_timeseries(self.symbol)
        self.ts = pf.select_tradeperiod(self.ts,
                                        self.start,
                                        self.end,
                                        use_adj=self.use_adj)
        self.ts, _ = pf.finalize_timeseries(self.ts, self.start)

        self.tlog = pf.TradeLog(self.symbol)
        self.dbal = pf.DailyBal()

        self._algo()
コード例 #6
0
ファイル: benchmark.py プロジェクト: suclike/pinkfish
    def run(self):
        self._ts = pf.fetch_timeseries(self._symbol)
        self._ts = pf.select_tradeperiod(self._ts,
                                         self._start,
                                         self._end,
                                         use_adj=self._use_adj,
                                         pad=False)
        self._ts, _ = pf.finalize_timeseries(self._ts, self._start)

        self._tlog = pf.TradeLog()
        self._dbal = pf.DailyBal()

        self._algo()
コード例 #7
0
ファイル: strategy.py プロジェクト: suclike/pinkfish
    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._ts, self._start = pf.finalize_timeseries(self._ts, self._start)

        self._tlog = pf.TradeLog()
        self._dbal = pf.DailyBal()

        self._algo()
コード例 #8
0
ファイル: strategy.py プロジェクト: tombohub/pinkfish
    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()
コード例 #9
0
ファイル: strategy.py プロジェクト: keel1982/pinkfish
    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()
コード例 #10
0
ファイル: strategy.py プロジェクト: tombohub/pinkfish
    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()
コード例 #11
0
    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()
コード例 #12
0
ファイル: strategy.py プロジェクト: suclike/pinkfish
    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

        # 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._ts, self._start = pf.finalize_timeseries(self._ts, self._start)

        self._tlog = pf.TradeLog()
        self._dbal = pf.DailyBal()

        self._algo()
コード例 #13
0
    def run(self):
        """
        Run the backtest.

        Don't adjust the start day because that may cause it not
        to match the start date of the strategy you are benchmarking
        against.  Instead, you should pass in the start date calculated
        for the strategy.
        """
        self.ts = pf.fetch_timeseries(self.symbol)
        self.ts = pf.select_tradeperiod(self.ts,
                                        self.start,
                                        self.end,
                                        use_adj=self.use_adj)
        self.ts, _ = 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()
コード例 #14
0
    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()
コード例 #15
0
    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()
コード例 #16
0
ファイル: portfolio.py プロジェクト: rahulmr/pinkfish
 def finalize_timeseries(self, ts, start):
     """ finalize timeseries """
     return pf.finalize_timeseries(ts, start)