【发布时间】:2019-06-22 05:19:56
【问题描述】:
我已使用 pandas_datareader 将雅虎的股票数据导入数据框。 有 2 列:日期和股票的调整收盘价。
Date Adj Close
2017-08-31 168.851196
2017-09-01 169.867691
2017-09-05 165.333496
2017-09-06 165.233810
2017-09-07 166.001160
2017-09-08 163.121201
2017-09-11 168.412735
2017-09-12 169.020630
2017-09-13 169.777969
2017-09-14 168.811356
2017-09-15 179.484131
2017-09-18 186.898300
2017-09-19 186.698990
2017-09-20 185.194214
2017-09-21 180.131882
2017-09-22 178.377991
2017-09-25 170.405807
2017-09-26 171.362473
2017-09-27 175.119354
2017-09-28 175.069534
2017-09-29 178.148788
2017-10-02 178.377991
2017-10-03 178.746704
2017-10-04 180.241486
2017-10-05 180.141861
2017-10-06 180.670013
2017-10-09 184.745804
2017-10-10 188.273499
2017-10-11 190.276505
2017-10-12 190.366211
我希望能够插入另一个名为“日志返回”的列,它采用当天的调整收盘价(由于交易日,日期并非全部相隔 1 天)并将其除以前几天的调整收盘价然后取那个商的自然对数
即Ln(A(today)/A(yesterday)),其中 A 只是形容词收盘价。
顺便说一下,我的数据框变量叫做 df。
import pandas as pd
import pandas_datareader as web
#import datetime internal datetime module
#datetime is a Python module
import datetime
#datetime.datetime is a data type within the datetime module
start = datetime.datetime(2015, 9, 1)
end = datetime.datetime(2018, 12, 31)
#DataReader method name is case sensitive
df = web.DataReader("nvda", 'yahoo', start, end)
#invoke to_csv for df dataframe object from
#DataReader method in the pandas_datareader library
#..\first_yahoo_prices_to_csv_demo.csv must not
#be open in another app, such as Excel
df = df.iloc[0:, 5:] #Trims the set to Adj Close
这就是我目前在我的代码中的内容。 编辑我不想要 A(今天)/A(昨天)-1,我实际上需要 Ln(A(今天)/A(昨天))。 (自然对数)
【问题讨论】:
-
所以您只是不想在前几行使用您的公式,而只在前一天使用?
-
您想如何处理计算中缺失的天数?
-
前 5 行的预期输出是什么?
-
我不需要处理丢失的日子。交易日不是每周 7 天。
-
所以你只想除以前一个最近的一天,如果昨天丢失了。