yfinance 攻略!Python 下載股票價格數據無難度
文章推薦指數: 80 %
YFinance 與Yahoo! Finance API. 顧名思義,yfinance 這個Library 的功能是一個Python 獲取Yahoo Finance API 的好用小夥伴。
這裡我們先科普一下 ...
Skiptocontent
Python編程.圖表
June26,2021
6:34pm
目錄
Addaheadertobegingeneratingthetableofcontents
yfinance攻略!Python下載股票價格數據無難度
Shareonfacebook
Shareontwitter
Shareonlinkedin
Shareonwhatsapp
目錄
Addaheadertobegingeneratingthetableofcontents
要說Python裡其中一個最適合訓練手勢(沒錯,Python編程像沖咖啡一樣,有手藝可言)的Library,莫過於yfinance。
yfinance是一個可以下載股票數據的Library。
由於股票數據,例如價格、交易等頗為大眾化,無論您是一個投資老手、投資初哥、或是完全不懂投資,都可以把yfinance視作Python修道館!
YFinance與Yahoo!FinanceAPI
顧名思義,yfinance這個Library的功能是一個Python獲取YahooFinanceAPI的好用小夥伴。
這裡我們先科普一下API的概念。
凡人的API解釋
API就像一個餐廳的服務生,而他只懂得端出餐廳菜單上有的料理。
我是廣告^o^
我們每次跟他點菜時,要告訴他我們想要哪一道菜,以及個人的口味,例如比較鹹、甜等。
API也是這樣運作的。
他是伺服器的服務生,只懂得處理既定類型的請求。
透過一個請求,我們便可以提取需要的數據。
Yahoo!FinanceAPI
有玩過股票的朋友就會知道Yahoo!Finance是其中一個最為方便的數據庫。
譬如我們想知道台積電(TSM)的股價,在網頁可以到移動到「歷史數據」。
我們可以透過更改「時段」等的參數獲取不同的數據。
我們這次運用到Yahoo!FinanceAPI,基本上與這個網頁版無異。
只要我們時刻提醒自己這個數據的來源,就更能掌握API的語法了。
我是廣告^o^
YFinance使用教學
這次我們繼續用GoogleColab教學。
有興趣了解GoogleColab可以到這裡:新手1/3:5分鐘免安裝學習Python?GoogleColabNotebook幫緊您!
在GoogleColab環境安裝YFinance
由於yfinance不是GoogleColab預設安裝的元件,所以我們需要先告訴GoogleColab安裝yfinance。
!pipinstallyfinance
importyfinanceasyf
透過以上2行的指令,我們要求我們的PythonLibrary管理員,pip,去安裝yfinance這個Library。
安裝成功後,我們再匯入整個Library。
如果您不太了解Library,可以到這一邊看看喔:新手2/3:GoogleColab如何製做互動表格和圖表?快來學Importlibrary/Jupyter。
獲取單一股票的數據
接下來我們先學如何深入提取1隻股票的數據。
我是廣告^o^
定義Ticker物件
yfinance運作的方式是透過我們定義一個Ticker的物件(Object),而透過這個物件,我們存取Yahoo!Finance的數據。
tsm=yf.Ticker(‘TSM’)
tsla=yf.Ticker(‘TSLA’)
定義一個Ticker的方法十分簡單,就是yf.Ticker(’SYMBOL’)。
Ticker物件的指令
Ticker物件有許多功能(methods/functions),但我們集中討論一下常見的幾個指令。
注意:以下使用TSM作例子,而我們已經定義tsm為yf.Ticker('TSM')。
指令回傳tsm.info股票的基本資料,例如公司名、行業、市值、以及一系列的財務比率(FinancialRatios)如P/E,P/B比率等。
tsm.financials公司的損益表(IncomeStatement),一次可以獲取4年的數據。
tsm.earnings公司4年間的總收入(Revenue)與盈虧(Earnings),即Top-line與Bottom-line數據tsm.actions公司的企業行動(CorporateAction)資料,例如股息(Dividend)和拆股(StockSplit)tsm.history()股票價格和企業行動的歷史。
包含OHLC(開盤Open、最高High、最低Low、收市Close)、成交量(Volume)等的重要數據。
有興趣了解每一個指令的回傳,可以在文末的GoogleColabNotebook看看噢。
獲取多個股票的交易數據
這是yfinance的最主要用途之一。
我們投資股票時總會先看看股價的走勢,再決定投資額、時期等。
我是廣告^o^
Start/end模式
#語法是yf.download(
#股票代號,
#start=開始日期,
#end=完結日期
#)
yf.download('TSMTSLA',start='2016-01-01',end='2021-01-01')
最常用的方法是使用所謂的Start/End模式來獲取數據,即是指定數據開始和結束日期。
透過以下的3個參數(parameters),我們提取到一個含有OHLC及交易量的pandasdataframe。
參數描述股票代號(例如‘TSMTSLA’)列舉所需的股票代號(可以在Yahoo!Finance的搜索找到每隻股票的代號)。
除了以空格分開每隻股票代號,您亦可以直接使用一個列表,如[‘TSM’,‘TSLA’]。
開始日期(例如‘2016-01-01’)以YYYY-MM-DD的格式輸入數據的開始日期。
如果日期不是交易日(tradingdays),那麼回傳的數據會以最近的下個交易日開始。
完結日期(例如‘2016-01-01’)以YYYY-MM-DD的格式輸入數據的完結日期。
如果日期不是交易日(tradingdays),那麼回傳的數據會以最近的上個交易日開始。
Period模式
#語法是yf.download(
#股票代號,
#period=日期範圍(1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max)
#interval=頻率(1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo)
#)
yf.download('TSMTSLA',period='6mo',interval='1mo')
另外一個常見的用法是Period模式,指定數據的日期範圍,例如3個月前、6個月前、1年前等至今的數據。
Period模式常見會聯合interval參數使用,提取到的pandasdataframe與Start/End模式差不多:
參數描述日期範圍(例如‘6mo’)3個月、6個月前的數據,適用於計算投資時間回報(3個月回報,今年至今回報等)。
頻率(例如‘1mo’)數據的頻率,可用於計算單月(1mo)、3個月(3mo)等的回報。
企業行動
留意在以上的圖片例子裡,固然有2021-01-01、2021-02-01等的數據,但怎麼會有2021-03-17等非月份的數據?
我是廣告^o^
這是因為在那些日期,出現了如股息(Dividends)、拆股(StockSplit)等的企業行動。
您可以上個環節提及的tsm.actions等的指令查看。
提取高頻股票數據(HighFrequency)
最後我們來說一下高頻數據的提取方法。
高頻數據(HighFrequencyData)是近年興起的一個概念,透過分析非常細膩、日內(Intraday)的股票走動,例如每分鐘的股票跳動,再以電腦作交易。
這種交易方法特別見於外匯市場(ForeignExchange)。
yf.download('TSMTSLA',period='7d',interval='1m')
細心一看,這個語法是Period模式的語法的延伸。
Yahoo!Finance提供最近7天的日內(Intraday)數據。
透過指定頻率(interval)為1m/5m/10m/90m等(m代表分鐘),可以提取到高頻率的股票價格數據。
我是廣告^o^
教學完整代碼
最後送給大家這篇教學的GoogleColab完整代碼。
如果您不懂得使用免安裝又好用的GoogleColabNotebook,記得閱讀這篇教學了:新手1/3:5分鐘免安裝學習Python?GoogleColabNotebook幫緊您!
結語
希望您透過以上教學了解更多透過yfinance存取Yahoo!Finance股票數據的方法。
記得繼續看看我們下一篇有關使用pandasdataframe來分析yfinance提取到的數據的技巧!
人氣文章
Git3/4:在VSCode使用.gitignore避免pycache、venv索引?
使用Git的時候,您有想過如何能夠使Git避免索引一些暫存、機密的資料嗎?如何避免Git索引虛擬環境.venv和位元組碼pycache?快來學習如何在VSCode啟用gitignore的功能,令您的Git技巧和專案管理更上一層樓!
ReadMore»
Git2/4:在VSCode啟用Git?介紹Git版面基本操作
您知道如何在VSCode的專案裡開始使用Git的功能嗎?在VSCode的SourceControl版本管理版面上的按鈕是什麼意思?快來學習如何在VSCode安裝和使用Git,為您的編程過程加入強大的Git輔助吧!
ReadMore»
Git1/4:甚麼是Git/Github?為什麼需要專案版本管理?
相信您一定會聽說過Git/GitHub,但您知道什麼是Git,和為什麼我們需要使用Git輔助編程嗎?快來學習基本的版本管理(versioncontrol),以及簡單易明的圖表告訴您Git的基本概念,準備您開始在自己的Python專案使用Git!
ReadMore»
GoogleAPI2/4:Python存取GoogleSheets?讀寫pandasdf
您知道Python可以直接存取GoogleSheets數據,並讀取成一個pandasdataframe嗎?如何把pandasdataframe輸出至GoogleSheets作數據保留?快來學習如何使用方便的GoogleSheetsAPI吧!
ReadMore»
GoogleAPI1/4:使用GoogleAPIPythonClient存取Google服務
您知道如何使用官方的GoogleAPIPythonClient存取Google服務,如GoogleSheets、Gmail郵件嗎?如何把GoogleAPI授權重用和存放在Python專案?快來學習使用GoogleAPIPythonClient,增強Python功效!
ReadMore»
Pandas的groupby就是簡單!如何統合數據與文字?
您知道如何使用pandas的groupby功能嗎?如何把文字串連、數字疊加、找出分組的平均值?如何處理多層的數據關係,和重複使用同一個列?快來一起學習如何使用pandasgroupby讓您可以簡單輕鬆上手。
ReadMore»
大家都在看
Git3/4:在VSCode使用.gitignore避免pycache、venv索引?
Git2/4:在VSCode啟用Git?介紹Git版面基本操作
Git1/4:甚麼是Git/Github?為什麼需要專案版本管理?
文章分類
Git與GitHub(3)
GoogleColab與JupyterNotebook(7)
Google雲端平台(3)
pandas(4)
VSCode(11)
入門(22)
金融(1)
電郵(1)
快讓我學更多
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
ReadMore»
主頁
使用條款
聯絡我們
Menu
主頁
使用條款
聯絡我們
©2021PYTHONVIZ.COM版權所有翻印必究
想學習Python嗎?
快來訂閱我們的電子報!
Name
Email
Confirm
我同意接收來自Python編程.圖表的通訊
我想收到最新Python資訊
訂閱電子報
延伸文章資訊
- 1美股- Yahoo奇摩股市
台股資料來源臺灣證券交易所、臺灣期貨交易所及財團法人中華民國證券櫃檯買賣中心,國際股市資料來源請參考Yahoo Finance。使用Yahoo奇摩股市服務前,請您詳閱相關使用規範 ...
- 2如何使用Python取得歷史股價,簡介yfinance、ffn、FinMind
顧名思義,yfinance 的資料來源是Yahoo Finance API,以國外股市來說, ... 實測美股大盤28年 · 看懂回測績效,如何評價一個交易策略或投資組合的好壞 ...
- 3Python 範例程式碼!使用Yahoo Finance 爬取0050ETF 股價
自從新冠肺炎發生後,2020 年3 月美股面臨了熔斷,台股當然也深受影響,正當大家以為空頭市場即將來臨時,股市突然急轉而上,全世界的股票市場迎來了歷史上最大的多頭 ...
- 4【股票網站推薦】11個分析美股台股的最佳股票網站大全
以下這些都是我們在看美股資料時,會常用來分析個股的免費網站,裡面的功能 ... Yahoo Finance 我覺得他的優點是可以把不同個股放在一起比較,比較他們數年的漲幅。
- 5使用yfinance获取美股数据的时候,为什么会报错(错误看简介 ...
用yfinance 尝试拉取yahoo 财经上的股票数据,谁曾想竟然出现了错误。一番搜索后发现是因为大陆不能访问雅虎财经了,所以使用yf.download时需要添加代理访问。