1

returns is a python data frame and this is the head. this is just for 2 stocks daily returns

date         NOW            BBY
2013-09-30  NaN           NaN
2013-10-01  -0.008855   0.012000
2013-10-02  0.015149    -0.007642
2013-10-03  -0.002296   0.000796
2013-10-04  0.043720    0.012206

I have a simple code that calculates annualized sharpe ratio for stocks

Function

N= 252
sharpe = np.sqrt(N)* returns.mean()/returns.std()
print (sharpe)

and this is the output when i print(sharpe)

NOW    0.906136
BBY    0.667774
dtype: float64

i want to get this value in a data frame, with column name = ticker, and sharpe ratio so it should look like this

Ticker Sharpe
NOW    0.906136
BBY    0.667774

I want to get this in a data frame as I have several other print functions, like VAr etc, so I can merge them and then export the data frame to excel.

please help me how to get print output in a data frame in python.

1 Answer 1

1
import numpy as np
import pandas as pd

# Construct initial dataframe    
df = pd.DataFrame({
    'date': ['2013-0-30', '2013-10-01', '2013-10-02', '2013-10-03', '2013-10-04'],
    'NOW': [np.nan, -0.008855, 0.015149, -0.002296, 0.043720],
    'BBY': [np.nan, 0.012000, -0.007642, 0.000796, 0.012206],
})
df = df.set_index('date')

# Calculate Sharpe ratio
N = 252
sharpe = np.sqrt(N) * df.mean() / df.std()

# Transform Sharpe ratio data from Series to DataFrame
df2 = sharpe.to_frame('Sharpe')
df2.index.name = 'Ticker'
df2 = df2.reset_index()

which gives as result:

In [1]: df2
Out[1]: 
  Ticker    Sharpe
0    NOW  8.061887
1    BBY  7.174034
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks so much Xukrao. It worked.. need another help, have posted as an answer

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.