Example #1
0
    def output_summary_stats(self):
        """
        Creates a list of summary statistics for the portfolio.
        """
        total_return = self.equity_curve['equity_curve'][-1]
        returns = self.equity_curve['returns']
        pnl = self.equity_curve['equity_curve']

        sharpe_ratio = create_sharpe_ratio(returns, periods=252 * 60 * 6.5)

        #import time
        #time0 = time.time()
        max_dd, dd_duration = create_drawdowns(pnl)
        #time1 = time.time()
        #print('timing create drawdown: {}'.format(time1 - time0))

        stats = dict()
        stats['Total Return'] = (total_return - 1.0)
        stats['Annualized Return'] = (
            total_return ** (365 / len(self.equity_curve.index))) - 1
        stats['Length of Series'] = len(self.equity_curve.index)
        stats['Sharpe Ratio'] = sharpe_ratio
        stats['Max Drawdown'] = max_dd
        stats['Drawdown Duration'] = floor(dd_duration)

        self.equity_curve.to_csv('equity.csv')
        return stats
Example #2
0
    def test_create_sharpe_ratio1(self):
        """
        test for non volatility serie
        """
        simm = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        prices = pd.Series(simm)
        returns = prices.pct_change()
        result = performance.create_sharpe_ratio(returns)

        self.assertTrue(math.isnan(result))
Example #3
0
 def test_create_sharpe_ratio0(self):
     """
     test for correct calculations
     """
     simm = [10, 9, 11, 10, 12, 11, 13, 12, 14, 13, 15]
     prices = pd.Series(simm)
     returns = prices.pct_change()
     result = performance.create_sharpe_ratio(returns)
     expected = 5.85973697
     self.assertAlmostEqual(result, expected)
Example #4
0
 def output_summary_stats(self):
     """
     Crea un elenco di statistiche di riepilogo per il portafoglio
     come lo Sharpe Ratio e le informazioni sul drowdown.
     """
     total_return = self.equity_curve['equity_curve'][-1]
     returns = self.equity_curve['returns']
     pnl = self.equity_curve['equity_curve']
     sharpe_ratio = create_sharpe_ratio(returns, periods=252 * 6.5 * 60)
     drawdown, max_dd, dd_duration = create_drawdowns(pnl)
     self.equity_curve['drawdown'] = drawdown
     stats = [("Total Return", "%0.2f%%" % \
               ((total_return - 1.0) * 100.0)),
              ("Sharpe Ratio", "%0.2f" % sharpe_ratio),
              ("Max Drawdown", "%0.2f%%" % (max_dd * 100.0)),
              ("Drawdown Duration", "%d" % dd_duration)]
     self.equity_curve.to_csv('equity.csv')
     return stats