vendor_fields = ['close'],
            cache_algo = 'cache_algo_return')               # how to return data)

        df = self.tsfactory.harvest_time_series(tsr_indices)

        df.columns = [x.split(".")[0] for x in df.columns]

        return df

if __name__ == '__main__':

    # create FX CTA strategy then chart the returns, leverage over time
    if True:
        strategy = StrategyFXCTA_Example()

        strategy.construct_strategy()
        strategy.plot_strategy_pnl()
        strategy.plot_strategy_leverage()
        strategy.plot_strategy_group_benchmark_pnl()
        strategy.plot_strategy_group_leverage()
        strategy.plot_strategy_group_benchmark_annualised_pnl()

    # create FX CTA strategy then use TradeAnalysis (via pyfolio) to analyse returns
    if True:
        from pythalesians.backtest.stratanalysis.tradeanalysis import TradeAnalysis
        strategy = StrategyFXCTA_Example()
        strategy.construct_strategy()

        tradeanalysis = TradeAnalysis()
        tradeanalysis.run_strategy_returns_stats(strategy)
        strategy.plot_strategy_pnl()                        # plot the final strategy
        strategy.plot_strategy_leverage()                   # plot the leverage of the portfolio
        strategy.plot_strategy_group_pnl_trades()           # plot the individual trade P&Ls
        strategy.plot_strategy_group_benchmark_pnl()        # plot all the cumulative P&Ls of each component
        strategy.plot_strategy_group_leverage()             # plot all the individual leverages
        strategy.plot_strategy_group_benchmark_annualised_pnl()

    # create a FX CTA strategy, then examine how P&L changes with different vol targeting
    # and later transaction costs
    if True:
        strategy = StrategyFXCTA_Example()

        from pythalesians.backtest.stratanalysis.tradeanalysis import TradeAnalysis

        ta = TradeAnalysis()

        # which backtesting parameters to change
        # names of the portfolio
        # broad type of parameter name
        parameter_list = [
            {'portfolio_vol_adjust': True, 'signal_vol_adjust' : True},
            {'portfolio_vol_adjust': False, 'signal_vol_adjust' : False}]

        pretty_portfolio_names = \
            ['Vol target',
             'No vol target']

        parameter_type = 'vol target'

        ta.run_arbitrary_sensitivity(strategy,
            cache_algo='cache_algo_return')  # how to return data)

        df = self.tsfactory.harvest_time_series(tsr_indices)

        df.columns = [x.split(".")[0] for x in df.columns]

        return df


if __name__ == '__main__':

    # create FX CTA strategy then chart the returns, leverage over time
    if True:
        strategy = StrategyFXCTA_Example()

        strategy.construct_strategy()
        strategy.plot_strategy_pnl()
        strategy.plot_strategy_leverage()
        strategy.plot_strategy_group_benchmark_pnl()
        strategy.plot_strategy_group_leverage()
        strategy.plot_strategy_group_benchmark_annualised_pnl()

    # create FX CTA strategy then use TradeAnalysis (via pyfolio) to analyse returns
    if True:
        from pythalesians.backtest.stratanalysis.tradeanalysis import TradeAnalysis
        strategy = StrategyFXCTA_Example()
        strategy.construct_strategy()

        tradeanalysis = TradeAnalysis()
        tradeanalysis.run_strategy_returns_stats(strategy)