示例#1
0
    def run_strategy(start_date, end_date):
        print('')
        #ms = manualStrategy(symbol = 'JPM', sd=start_date, ed=end_date, sv = 100000)
        np.random.seed(106347)

        threshold_list = [0.005, 0.01, 0.02, 0.03, 0.04, 0.05, 0.10]
        for i in threshold_list:    
            learner = StrategyLearner(t=i)
            learner.addEvidence(symbol = "JPM", sd=dt.datetime(2008,1,1), ed=dt.datetime(2009,12,31), sv = 100000)
            df_trades = learner.testPolicy(symbol = "JPM", sd=start_date, ed=end_date, sv = 100000)        
            df_orders = learner.createOrdersDataFrame(df_trades)
            portvals_strategy = msim.compute_portvals(orders_file = df_orders, start_val = 100000, commission=0, impact=0.005, end_date = end_date, start_date = start_date)
            if i == threshold_list[0]:
                threshold_portvals = pd.DataFrame(index = df_trades.index)

            threshold_portvals[i] = portvals_strategy
            
            print('Statistics for Random Forest Strategy with Buy/Sell Threshold: ' + str(i))
            msim.computeStatistics(portvals_strategy)


        import matplotlib.pyplot as plt

        ax = threshold_portvals.plot(title='Portfolio Performance with different values of Buy/Sell Threshold', fontsize=10)
        ax.set_xlabel('Date')
        ax.set_ylabel('Portfolio Value')
        plt.show()
示例#2
0
 def run_strategy(start_date, end_date):
     print('')
     ms = manualStrategy(symbol='JPM',
                         sd=start_date,
                         ed=end_date,
                         sv=100000)
     df_trades = ms.testPolicy()
     df_orders = ms.createOrdersDataFrame(df_trades)
     benchmark = ms.createBenchMarkDataFrame(df_trades, sd=start_date)
     portvals = msim.compute_portvals(orders_file=df_orders,
                                      start_val=100000,
                                      commission=9.95,
                                      impact=0.005,
                                      end_date=end_date,
                                      start_date=start_date)
     portvals_benchmark = msim.compute_portvals(orders_file=benchmark,
                                                start_val=100000,
                                                commission=0,
                                                impact=0,
                                                end_date=end_date,
                                                start_date=start_date)
     print('Statistics for Manual Strategy')
     msim.computeStatistics(portvals)
     print('')
     print('Statistics for Benchmark Strategy')
     msim.computeStatistics(portvals_benchmark)
     generatePerformanceChart(df_trades, portvals, portvals_benchmark)
    def run_strategy(start_date, end_date):
        print('')
        #ms = manualStrategy(symbol = 'JPM', sd=start_date, ed=end_date, sv = 100000)
        np.random.seed(106347)
        learner = StrategyLearner()
        learner.addEvidence(symbol="JPM",
                            sd=dt.datetime(2008, 1, 1),
                            ed=dt.datetime(2009, 12, 31),
                            sv=100000)
        df_trades = learner.testPolicy(symbol="JPM",
                                       sd=start_date,
                                       ed=end_date,
                                       sv=100000)
        #df_trades = ms.testPolicy()

        df_orders = learner.createOrdersDataFrame(df_trades)
        benchmark = learner.createBenchMarkDataFrame(df_trades, sd=start_date)

        portvals = msim.compute_portvals(orders_file=df_orders,
                                         start_val=100000,
                                         commission=0,
                                         impact=0.005,
                                         end_date=end_date,
                                         start_date=start_date)
        portvals_benchmark = msim.compute_portvals(orders_file=benchmark,
                                                   start_val=100000,
                                                   commission=0,
                                                   impact=0,
                                                   end_date=end_date,
                                                   start_date=start_date)
        print 'Statistics for Random Forest Strategy'
        msim.computeStatistics(portvals)
        print ''
        print 'Statistics for Benchmark Strategy'
        msim.computeStatistics(portvals_benchmark)
        generatePerformanceChart(df_trades, portvals, portvals_benchmark)
示例#4
0
    def run_strategy(start_date, end_date):
        print('')
        #ms = manualStrategy(symbol = 'JPM', sd=start_date, ed=end_date, sv = 100000)
        np.random.seed(106348)

        symbols = ['AAPL', 'XOM', 'GOOG', 'IBM']

        for sym in symbols:

            print sym

            learner = StrategyLearner()
            learner.addEvidence(symbol=sym,
                                sd=dt.datetime(2008, 1, 1),
                                ed=dt.datetime(2009, 12, 31),
                                sv=100000)
            df_trades = learner.testPolicy(symbol=sym,
                                           sd=start_date,
                                           ed=end_date,
                                           sv=100000)
            df_orders = learner.createOrdersDataFrame(df_trades)

            ms = manual.manualStrategy(symbol=sym,
                                       sd=start_date,
                                       ed=end_date,
                                       sv=100000)
            df_trades_ms = ms.testPolicy()
            df_orders_ms = ms.createOrdersDataFrame(df_trades_ms)

            benchmark = learner.createBenchMarkDataFrame(df_trades,
                                                         sd=start_date)

            portvals_strategy = msim.compute_portvals(orders_file=df_orders,
                                                      start_val=100000,
                                                      commission=0,
                                                      impact=0.005,
                                                      end_date=end_date,
                                                      start_date=start_date)
            portvals_benchmark = msim.compute_portvals(orders_file=benchmark,
                                                       start_val=100000,
                                                       commission=0,
                                                       impact=0,
                                                       end_date=end_date,
                                                       start_date=start_date)
            portvals_manual = msim.compute_portvals(orders_file=df_orders_ms,
                                                    start_val=100000,
                                                    commission=0,
                                                    impact=0.005,
                                                    end_date=end_date,
                                                    start_date=start_date)

            print('Statistics for Random Forest Strategy')
            msim.computeStatistics(portvals_strategy)
            print('')
            print('Statistics for Manual Strategy')
            msim.computeStatistics(portvals_manual)
            print('')
            print('Statistics for Benchmark Strategy')
            msim.computeStatistics(portvals_benchmark)
            generatePerformanceChart(df_trades, portvals_strategy,
                                     portvals_manual, portvals_benchmark)
示例#5
0
    def run_strategy(start_date, end_date):
        print('')
        #ms = manualStrategy(symbol = 'JPM', sd=start_date, ed=end_date, sv = 100000)
        np.random.seed(106348)

        learner = StrategyLearner()
        learner.addEvidence(symbol="JPM",
                            sd=dt.datetime(2008, 1, 1),
                            ed=dt.datetime(2009, 12, 31),
                            sv=100000)
        df_trades = learner.testPolicy(symbol="JPM",
                                       sd=start_date,
                                       ed=end_date,
                                       sv=100000)
        df_orders = learner.createOrdersDataFrame(df_trades)

        ms = manual.manualStrategy(symbol='JPM',
                                   sd=start_date,
                                   ed=end_date,
                                   sv=100000)
        df_trades_ms = ms.testPolicy()
        df_orders_ms = ms.createOrdersDataFrame(df_trades_ms)

        benchmark = learner.createBenchMarkDataFrame(df_trades, sd=start_date)

        portvals_strategy = msim.compute_portvals(orders_file=df_orders,
                                                  start_val=100000,
                                                  commission=0,
                                                  impact=0.005,
                                                  end_date=end_date,
                                                  start_date=start_date)
        portvals_benchmark = msim.compute_portvals(orders_file=benchmark,
                                                   start_val=100000,
                                                   commission=0,
                                                   impact=0,
                                                   end_date=end_date,
                                                   start_date=start_date)
        portvals_manual = msim.compute_portvals(orders_file=df_orders_ms,
                                                start_val=100000,
                                                commission=0,
                                                impact=0.005,
                                                end_date=end_date,
                                                start_date=start_date)

        print('Statistics for Random Forest Strategy')
        msim.computeStatistics(portvals_strategy)
        print('')
        print('Statistics for Manual Strategy')
        msim.computeStatistics(portvals_manual)
        print('')
        print('Statistics for Benchmark Strategy')
        msim.computeStatistics(portvals_benchmark)
        generatePerformanceChart(df_trades, portvals_strategy, portvals_manual,
                                 portvals_benchmark)

        tot_cum_ret = 0
        tot_sharpe_ratio = 0
        tot_std_daily_ret = 0
        tot_avg_daily_ret = 0

        N = 10
        i = 0
        print ''
        print 'Lets run the Random Forest 10 times and average results for performance'
        while i < N:
            np.random.seed(np.random.randint(0, 100000))
            learner = StrategyLearner()
            learner.addEvidence(symbol="JPM",
                                sd=dt.datetime(2008, 1, 1),
                                ed=dt.datetime(2009, 12, 31),
                                sv=100000)
            df_trades = learner.testPolicy(symbol="JPM",
                                           sd=start_date,
                                           ed=end_date,
                                           sv=100000)
            df_orders = learner.createOrdersDataFrame(df_trades)
            portvals_strategy = msim.compute_portvals(orders_file=df_orders,
                                                      start_val=100000,
                                                      commission=0,
                                                      impact=0.005,
                                                      end_date=end_date,
                                                      start_date=start_date)
            cum_ret, sharpe_ratio, std_daily_ret, avg_daily_ret = msim.computeStatisticsReturnValues(
                portvals_strategy)
            tot_cum_ret = tot_cum_ret + cum_ret
            tot_sharpe_ratio = tot_sharpe_ratio + sharpe_ratio
            tot_std_daily_ret = tot_std_daily_ret + std_daily_ret
            i = i + 1

        print 'The average cumulative return is: ' + str(tot_cum_ret / N)
        print 'The average sharpe ratio is: ' + str(tot_sharpe_ratio / N)
        print 'The average standard dev of daily returns is: ' + str(
            tot_std_daily_ret / N)