I am trying to download historical data from Yahoo using Pandas datareader. This is the code that I normally use:
import pandas_datareader as pdr
df = pdr.get_data_yahoo('SPY')
Run Code Online (Sandbox Code Playgroud)
However, I started receiving this error today: RemoteDataError: Unable to read URL: https://finance.yahoo.com/quote/SPY/history?period1=1467511200&period2=1625277599&interval=1d&frequency=1d&filter=history
Does anyone know how to solve it?
Thank you very much in advance!
从雅虎获得 SPY 的数据后,我创建了一个收盘价通道,如下所示,最大和最小滚动窗口。色谱柱是 HC 和 HL。
我需要创建一个列(我称之为标志),当收盘价等于 HC 时显示 1,并且该值会持续到收盘价等于 HL。此时Flag的值为-1。如您所见,非常简单,Flag 可以只有两个值;1 或 -1。
简单的公式是这样的:
我尝试了几件事,包括下面的代码,但都没有成功。此代码的问题在于显示了 0 值。而且我不知道如何通过条件使其消失:
import pandas as pd
import pandas_datareader as dr
import numpy as np
from datetime import date
df = dr.data.get_data_yahoo('SPY',start='01-01-2019',end=date.today())
df['HC'] = df['Close'].rolling(20).max()
df['LC'] = df['Close'].rolling(20).min()
df['Flag'] = [1 if (df.loc[ei, 'Close'] == df.loc[ei, 'HC']) else
-1 if (df.loc[ei, 'Close'] == …Run Code Online (Sandbox Code Playgroud) 我试图在滚动窗口上对 SPY 收盘价应用赫斯特指数。如果我将以下代码(我从这里获得:https : //www.quantstart.com/articles/Basics-of-Statistical-Mean-Reversion-Testing)应用于收盘价列,则效果很好。然而,这给了我一个静态值。考虑到最近 200 个收盘价,我想在滚动窗口上应用赫斯特指数。我的目标是获得一列,其中考虑到最近 200 个收盘价,在每一行中更新 Hurst 指数。
from numpy import cumsum, log, polyfit, sqrt, std, subtract
from numpy.random import randn
import pandas_datareader as dr
from datetime import date
df = dr.data.get_data_yahoo('SPY',start='23-01-1991',end=date.today())
def hurst(ts):
"""Returns the Hurst Exponent of the time series vector ts"""
# Create the range of lag values
lags = range(2, 100)
# Calculate the array of the variances of the lagged differences
tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]
# …Run Code Online (Sandbox Code Playgroud) 如下所示,我创建了三个包含不同随机数的数组:
np.random.seed(200)
Array1 = np.random.randn(300)
Array2 = Array1 + np.random.randn(300) * 2
Array3 = Array1 + np.random.randn(300) * 2
data = np.array([Array1, Array2 , Array3])
#data.reshape(data, (Array3, Array1)
mydf = pd.DataFrame(data)
mydf.tail()
Run Code Online (Sandbox Code Playgroud)
我的目标是使用这三个数组构建一个DataFrame。每个数组应在不同的列中显示其值。DataFrame应该具有三列和索引。我上面的代码的问题是,数据框是在水平位置而不是垂直位置构建的。DataFrame看起来像这样:
我试图使用reshape函数来重塑名为“ data”的numpy数组,但是我无法使其工作。任何帮助都将受到欢迎。谢谢!