Browse Source

Various updates

master
Denis Tereshkin 6 years ago
parent
commit
81ffb9f7d0
  1. 1
      .gitignore
  2. 25
      src/naiback/analyzers/statsanalyzer.py
  3. 1
      src/naiback/analyzers/tradeslistanalyzer.py
  4. 4
      src/naiback/indicators/highest.py
  5. 4
      src/naiback/indicators/lowest.py

1
.gitignore vendored

@ -4,3 +4,4 @@ dist/* @@ -4,3 +4,4 @@ dist/*
src/naiback.egg-info/*
.*
__pycache__
\#*.*\#

25
src/naiback/analyzers/statsanalyzer.py

@ -3,6 +3,9 @@ from .analyzer import Analyzer @@ -3,6 +3,9 @@ from .analyzer import Analyzer
from prettytable import PrettyTable
import numpy as np
import math
def render_float(a):
return "{:.3f}".format(a)
@ -98,4 +101,26 @@ class StatsAnalyzer(Analyzer): @@ -98,4 +101,26 @@ class StatsAnalyzer(Analyzer):
result['long']['profit_factor'] = render_ratio(result['long']['total_won'], -result['long']['total_lost'])
result['short']['profit_factor'] = render_ratio(result['short']['total_won'], -result['short']['total_lost'])
mean = np.mean(list(map(lambda x: x.pnl(), positions)))
stddev = np.std(list(map(lambda x: x.pnl(), positions)))
sharpe = mean / stddev
tstat = sharpe * math.sqrt(len(positions))
result['all']['sharpe_ratio'] = sharpe
result['all']['t_stat'] = tstat
mean = np.mean(list(map(lambda x: x.pnl(), longs)))
stddev = np.std(list(map(lambda x: x.pnl(), longs)))
sharpe = mean / stddev
tstat = sharpe * math.sqrt(len(longs))
result['long']['sharpe_ratio'] = sharpe
result['long']['t_stat'] = tstat
mean = np.mean(list(map(lambda x: x.pnl(), shorts)))
stddev = np.std(list(map(lambda x: x.pnl(), shorts)))
sharpe = mean / stddev
tstat = sharpe * math.sqrt(len(shorts))
result['short']['sharpe_ratio'] = sharpe
result['short']['t_stat'] = tstat
return result

1
src/naiback/analyzers/tradeslistanalyzer.py

@ -16,6 +16,7 @@ class TradesListAnalyzer(Analyzer): @@ -16,6 +16,7 @@ class TradesListAnalyzer(Analyzer):
'entry_time' : pos.entry_time(),
'exit_time' : pos.exit_time(),
'pnl' : pos.pnl(),
'profit_percentage' : pos.profit_percentage(),
'is_long' : pos.is_long(),
'security' : pos.ticker,
'size' : pos.original_size() }

4
src/naiback/indicators/highest.py

@ -7,7 +7,7 @@ def Highest(data, period): @@ -7,7 +7,7 @@ def Highest(data, period):
return result
result[0] = data[0]
for i in range(1, len(data)):
result[i] = max(data[max(0, i - period):(i+1)])
result[i] = max(data[max(0, i - period + 1):(i+1)])
return result
@ -16,4 +16,4 @@ def HighestValue(data, index, period): @@ -16,4 +16,4 @@ def HighestValue(data, index, period):
return None
if index == 0:
return data[0]
return max(data[max(0, index - period):(index+1)])
return max(data[max(0, index - period + 1):(index+1)])

4
src/naiback/indicators/lowest.py

@ -7,7 +7,7 @@ def Lowest(data, period): @@ -7,7 +7,7 @@ def Lowest(data, period):
return result
result[0] = data[0]
for i in range(1, len(data)):
result[i] = min(data[max(0, i - period):(i+1)])
result[i] = min(data[max(0, i - period + 1):(i+1)])
return result
@ -16,4 +16,4 @@ def LowestValue(data, index, period): @@ -16,4 +16,4 @@ def LowestValue(data, index, period):
return None
if index == 0:
return data[0]
return min(data[max(0, index - period):(index+1)])
return min(data[max(0, index - period + 1):(index+1)])

Loading…
Cancel
Save