【问题标题】:Calculating 5 year rolling returns计算 5 年滚动回报
【发布时间】:2018-10-13 11:42:55
【问题描述】:

我有以下代码,其中包含 1995 年 1 月至 2000 年 12 月期间美国股票的回报。我希望使用 Python 中的 60 个月滚动回报来计算 2001 年 1 月的回报。有5年的回报,这怎么可能?

我想计算 2001 年 1 月至 2010 年 12 月期间每只股票的这个值。任何帮助都会很棒!

import quandl
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Use Quandl to get adjusted close price
quandl.ApiConfig.api_key = 'Enter Your Key'
stocks = ['MSFT', 'AAPL', 'WMT', 'GE', 'KO', 'F', 'JNJ', 'BA', 'XOM']
stockdata = quandl.get_table('WIKI/PRICES', ticker = stocks, paginate=True,
                    qopts = { 'columns': ['date', 'ticker', 'adj_close'] },
                    date = { 'gte': '1995-1-1', 'lte': '2000-12-31' })

# Setting date as index with columns of tickers and adjusted closing 
# price
data1 = stockdata.set_index('date')
table = data1.pivot(columns='ticker')
table.head()

# Daily and annual returns of the stocks
returns_daily = table.pct_change()
returns_daily.head()

【问题讨论】:

    标签: python pandas finance quandl economics


    【解决方案1】:

    您可以使用.rolling() 创建 60 个月滚动回报的子集

    returns_5year=table.rolling(250*6).pct_change()
    

    如果您想要年度回报,请使用 'asfreq('BA')`

    returns_yearly = table.asfreq('BA').pct_change()
    

    【讨论】:

    • 你是如何到达“250*6”的?您是否假设每个月的数据存在 25 天?
    • 250 是一个简短的例子,这完全取决于您如何安排数据
    • 感谢您的回复。我有一个关于rolling()的后续问题。据我了解,rolling() 甚至会返回那些周期小于 (250*6) 的窗口。例如,即使我们没有 60 个月前的数据,它也会返回第一行。有没有办法让它只返回它们之间正好有 (250*6) 句点的那些窗口?
    猜你喜欢
    • 1970-01-01
    • 2013-02-26
    • 2020-07-19
    • 2019-02-12
    • 1970-01-01
    • 2020-09-02
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多