我正在尝试将股票数据下载yahoo finance
到我的 Julia 代码中,并将其用于进一步分析。由于 Julia 股票相关的包在下载数据时有很多错误,我想使用PyCall
python 库yfinance
来获取数据。
获取数据的python示例如下所示:
import yfinance as yf
msft = yf.Ticker("MSFT")
# get stock info
msft.info
# get historical market data
hist = msft.history(period="max")
# show actions (dividends, splits)
msft.actions
print(msft.actions)
# show dividends
msft.dividends
print(msft.dividends)
# show splits
msft.splits
print(msft.splits)
# show financials
msft.financials
msft.quarterly_financials
# show major holders
msft.major_holders
# show institutional holders
msft.institutional_holders
# show balance sheet
msft.balance_sheet
msft.quarterly_balance_sheet
# show cashflow
msft.cashflow
msft.quarterly_cashflow
# show earnings
msft.earnings
msft.quarterly_earnings
# show sustainability
msft.sustainability
# show analysts recommendations
msft.recommendations
# show next event (earnings, etc)
msft.calendar
# show ISIN code - *experimental*
# ISIN = International Securities Identification Number
msft.isin
# show options expirations
msft.options
# get option chain for specific expiration
opt = msft.option_chain('2021-01-29')
# data available via: opt.calls, opt.puts
我对朱莉娅代码的看法:
module MyModule
using PyCall
function __init__()
py"""
import yfinance as yf
def data()
data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")
"""
end
tickers_data = py"data"
end
为糟糕的例子道歉,但我不确定如何PyCall
在这种情况下使用。请提出解决此问题的方法。
提前致谢。
更新:
我使用以下命令安装yfinance
在 anaconda中:(conda version 4.9.2)
conda install -c ranaroussi yfinance
这将在conda中安装yfinance
库。base root
按照@PrzemyslawSzufel 的建议,我更新了我的 PyCall 代码:
using PyCall
yf = pyimport("yfinance")
# Tickers
msft = yf.Ticker("MSFT")
# get stock information
msft.info
# get historical market data
hist = msft.history(period="max")
# show actions (dividends, splits)
msft.actions
println(msft.actions)
但是,在运行此代码段时PyError
会抛出 a:
PyError (PyImport_ImportModule
The Python package yfinance could not be imported by pyimport. Usually this means
that you did not install yfinance in the Python version being used by PyCall.
PyCall is currently configured to use the Julia-specific Python distribution
installed by the Conda.jl package. To install the yfinance module, you can
use `pyimport_conda("yfinance", PKG)`, where PKG is the Anaconda
package the contains the module yfinance, or alternatively you can use the
Conda package directly (via `using Conda` followed by `Conda.add` etcetera).
Alternatively, if you want to use a different Python distribution on your
system, such as a system-wide Python (as opposed to the Julia-specific Python),
you can re-configure PyCall with that Python. As explained in the PyCall
documentation, set ENV["PYTHON"] to the path/name of the python executable
you want to use, run Pkg.build("PyCall"), and re-launch Julia.
我尝试通过使用 conda 在 julia 中专门导入包来解决此问题:
using Conda
Conda.add("ranaroussi yfinance")
yf = pyimport_conda("yfinance", PKG)
即使这样也不能解决问题。请为此错误提出解决方案。谢谢。