计算年度标准差,每月 returns pandas
Calculating yearly standard deviation, given monthly returns in pandas
我有一个计算月度的函数returns:
def monthlyreturns(df):
first = df.resample('M').first().to_period('M')
last = df.resample('M').last().to_period('M')
return ((last-first)/first) * 100
以及来自每月returns(股票)的结果 df:
FOX FOXA MMM
Date
2012-01 5.4 3.2 -.08
2012-02 .07 1.2 -.62
...
2017-08 -.2 -4.2 2.3
我的问题是 - 如何计算一年的标准偏差?我的预期输出是将 df 保持相同的格式(列中有股票,日期作为索引),但计算年度标准偏差,给定每月 returns(所以 ea 股票应该有大约 7 个值)
到目前为止我已经尝试过:
sd = pd.DataFrame()
x = -13
y = -1
for date in reversed(periods): #where periods is ea year
sd[date] = np.std(monthly_returns.iloc[x:y])
x -= 12
y -= 12
if x < -72:
break
这有效 - 但日期和列被交换了,想知道是否有更简洁的代码来执行此操作
monthly_returns.groupby(monthly_returns.index.year).std()
以你的例子为例:
# FOX FOXA MMM
#2012 3.768879 1.414214 0.381838
#2017 NaN NaN NaN
我有一个计算月度的函数returns:
def monthlyreturns(df):
first = df.resample('M').first().to_period('M')
last = df.resample('M').last().to_period('M')
return ((last-first)/first) * 100
以及来自每月returns(股票)的结果 df:
FOX FOXA MMM
Date
2012-01 5.4 3.2 -.08
2012-02 .07 1.2 -.62
...
2017-08 -.2 -4.2 2.3
我的问题是 - 如何计算一年的标准偏差?我的预期输出是将 df 保持相同的格式(列中有股票,日期作为索引),但计算年度标准偏差,给定每月 returns(所以 ea 股票应该有大约 7 个值)
到目前为止我已经尝试过:
sd = pd.DataFrame()
x = -13
y = -1
for date in reversed(periods): #where periods is ea year
sd[date] = np.std(monthly_returns.iloc[x:y])
x -= 12
y -= 12
if x < -72:
break
这有效 - 但日期和列被交换了,想知道是否有更简洁的代码来执行此操作
monthly_returns.groupby(monthly_returns.index.year).std()
以你的例子为例:
# FOX FOXA MMM
#2012 3.768879 1.414214 0.381838
#2017 NaN NaN NaN