Пример #1
0
 def output_summary_stats(self):
  #creates equity df from all holdings
  self.equity_curve = pd.DataFrame(self.all_holdings)
  self.equity_curve.set_index('datetime', inplace=True)
  self.equity_curve['returns'] = self.equity_curve['total'].pct_change()
  #curve['equity_curve'] = (1.0+curve['returns']).cumprod()
  #self.equity_curve = curve
  
  #summary stats for portfolio
  returns = self.equity_curve['returns']
  #pnl = self.equity_curve['equity_curve']
  sharpe_ratio = performance.annualised_sharpe(returns, N=252)
  sortino_ratio = performance.annualised_sortino(returns, N=252)
  ddstats = performance.dd_stats(returns, N=252)
  annualised_mar = ddstats[0]
  total_return_mar = ddstats[1]
  maxDD = ddstats[2]
  maxDDduration = ddstats[3]
  averageDDduration = ddstats[4]
  numberDDs = ddstats[5]
  averageDD = ddstats[6]
  self.equity_curve['equity_curve'] = ddstats[7]
  self.equity_curve['ddPercentSeries'] = ddstats[8]
  ccr_total_return = ddstats[9]
  total_return = ddstats[10]
  cagr = ddstats[11]

  stats = [('Total Return', '%0.2f%%' % ((total_return)*100.0)), 
        ('CAGR', '%0.2f%%' % ((cagr)*100.0)),
        ('Sharpe Ratio', '%0.2f' % sharpe_ratio), 
        ('Sortino Ratio', '%0.2f' % sortino_ratio), 
        ('Annualised MAR', '%0.2f' % annualised_mar), 
        ('Total Return MAR', '%0.2f' % total_return_mar), 
	    ('Max Drawdown', '%0.2f%%' % (maxDD*100.0)), 
	    ('Drawdown Duration', '%d'% maxDDduration , ' periods' ),
        ('Average DD Duration', '%0.2f' % averageDDduration, ' periods' ), 
        ('Average Drawdown', '%0.2f%%' % averageDD), 
	    ('Number of Drawdowns', '%d' % numberDDs)
        ]

  self.equity_curve.to_csv('/media/sf_Python/' + datetime.datetime.now().
	strftime('%Y-%m-%d-%H-%M-%S')+'_equity.csv')
  return stats
Пример #2
0
from sys import path
import os
path.append(os.getcwd() + '/../engine')
path.append(os.getcwd() + '/../')
import pandas as pd
import performance

if __name__ == "__main__":
  data = pd.io.parsers.read_csv(
    'AAPL.csv', header=0, index_col=0, parse_dates=True, 
    names=['datetime','open','low','high','close','volume','oi']
    ).sort()

  returns = data['close'].pct_change()
  data['returns'] = returns
  sharpe_ratio = performance.annualised_sharpe(returns, N=252)
  sortino_ratio = performance.annualised_sortino(returns, N=252)
  ddstats = performance.dd_stats(returns, N=252)
  annualised_mar = ddstats[0]
  total_return_mar = ddstats[1]
  maxDD = ddstats[2]
  maxDDduration = ddstats[3]
  averageDDduration = ddstats[4]
  numberDDs = ddstats[5]
  averageDD = ddstats[6]
  data['equity_curve'] = ddstats[7]
  data['ddPercentSeries'] = ddstats[8]
  ccr_total_return = ddstats[9]
  total_return = ddstats[10]
  cagr = ddstats[11]