Portfolio Analysis Basics: Volatility and Sharpe Ratio

In this story, we are going to discuss why volatility is so important and how to assess its impact on return.

Shuo Wang
5 min readSep 15, 2020

--

Daily Returns of Four Price Time Series

When we look at a stock or any type of investments, the first thing we care about is usually how much money we can make from it, in other words, the returns of the investments. However, there is actually quite a bit more to it than just that. Here we’ll demonstrate with an example.

First things first, I need some stock prices and their daily returns to do analysis on. So, I am going to generate 4 different price time series and compare them to see which one I want to buy!

Price Simulation

In order to do that, I am going to use the Geometric Brownian Motion (GBM) process that I mentioned in an earlier story (link):

import pandas as pd
import numpy as np
def daily_returns(prices): # cur_price / prev_price - 1.0 = daily_returns
res = (prices/prices.shift(1) - 1.0)[1:]
res.columns = ['return']

return res
def brownian_prices(start, end,
mu=0.0001, sigma=0.01, s0=100.0):

bdates = pd.bdate_range(start, end)
size = len(bdates)

np.random.seed(1)
wt = np.random.standard_normal(size)
# GBM process
st = s0 * np.cumprod(
np.exp(mu - (sigma * sigma / 2.0)
+ sigma * wt))

return pd.DataFrame(data={'date': bdates,
'price': st}).set_index('date')

With this process, here are my 4 stock price time series:

start = '20100101'
end = '20200101'
returns1 = daily_returns(brownian_prices(start,
end,
mu=0.002,
sigma=0.01,
s0=100.0))

returns2 = daily_returns(brownian_prices(start,
end,
mu=0.002,
sigma=0.02,
s0=100.0))

returns3 = daily_returns(brownian_prices(start…

--

--

Shuo Wang

Interesting pieces on various topics in finance and technology.