Variance

$\sigma^2 = \frac{\Sigma(X-\bar X)^2}{N-1}$

measures the dispersion of a set of data points around the mean

Standard deviation

$\sigma = \sqrt {\sigma^2}$

In [1]:
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
In [2]:
tickers = ['PG', 'BEI.DE']

sec_data = pd.DataFrame()

for t in tickers:
    sec_data[t] = wb.DataReader(t, data_source='yahoo', start='2007-1-1')['Adj Close']
In [3]:
sec_data.tail()
Out[3]:
PG BEI.DE
Date
2020-04-23 119.400002 95.379997
2020-04-24 118.779999 94.779999
2020-04-27 117.449997 94.440002
2020-04-28 116.889999 94.900002
2020-04-29 117.080002 95.120003
In [4]:
sec_returns = np.log(sec_data / sec_data.shift(1))
sec_returns.tail()
Out[4]:
PG BEI.DE
Date
2020-04-23 0.006647 -0.005854
2020-04-24 -0.005206 -0.006310
2020-04-27 -0.011260 -0.003594
2020-04-28 -0.004779 0.004859
2020-04-29 0.001624 0.002316

PG

In [5]:
sec_returns['PG'].mean()
Out[5]:
0.00029771352887306016
In [6]:
sec_returns['PG'].mean() * 250
Out[6]:
0.07442838221826505
In [7]:
sec_returns['PG'].std()
Out[7]:
0.011946966203036301

$var \centerdot 250 = \sigma^2 \centerdot 250$

$\sqrt{var \centerdot 250} = \sqrt{\sigma^2 \centerdot 250}$

$\quad \quad \quad \quad \quad = \sigma \centerdot \sqrt {250}$

In [8]:
sec_returns['PG'].std() * 250 ** 0.5
Out[8]:
0.1888981216532417

Beiersdorf

In [9]:
sec_returns['BEI.DE'].mean()
Out[9]:
0.00023541601978924716
In [10]:
sec_returns['BEI.DE'].mean() * 250
Out[10]:
0.058854004947311786
In [11]:
sec_returns['BEI.DE'].std()
Out[11]:
0.013763825472240207
In [12]:
sec_returns['BEI.DE'].std() * 250 ** 0.5
Out[12]:
0.2176251890466085

PG and Beiersdorf

In [13]:
print (sec_returns['PG'].mean() * 250)
print (sec_returns['BEI.DE'].mean() * 250)
0.07442838221826505
0.058854004947311786
In [14]:
sec_returns[['PG', 'BEI.DE']].mean() * 250
Out[14]:
PG        0.074428
BEI.DE    0.058854
dtype: float64
In [15]:
sec_returns[['PG', 'BEI.DE']].std() * 250 ** 0.5
Out[15]:
PG        0.188898
BEI.DE    0.217625
dtype: float64