In [1]:
import numpy as np

In [2]:
# annual return
value = {'start': 100.0, 'end':110.0}
metric = round((value['end']/value['start']) - 1, 2)
metric


Out[2]:
0.1

In [3]:
# stand dev of daily return
value = [100.0, 102.0, 99.0]
daily_returns = [0 for x in xrange(len(value))]

for i in xrange(len(value)):
    if i != 0:
        #                      day / day before
        daily_returns[i] = round((value[i]/value[i-1]) - 1, 2)

# risk
print daily_returns
std_metric = np.std(daily_returns)
print round(std_metric, 2)


[0, 0.02, -0.03]
0.02

sharpe ratio (return vs amount of risk [reward/risk]; if same return, higher is better)

$S = \frac{E[R]}{\sigma} = \frac{E[R]}{\sqrt{var[R]}}$


In [4]:
# simplified version
k = np.sqrt(250) # factor for daily returns (250 days in a trading year)
metric = k * np.mean(daily_returns)/np.std(daily_returns)
metric


Out[4]:
-2.5649458802128842

In [5]:
# simplified version
k = np.sqrt(250) # factor for daily returns (250 days in a trading year)
metric = k * 0.005/0.04
metric


Out[5]:
1.976423537605237