yfinance 攻略!Python 下載股票價格數據無難度

文章推薦指數: 80 %
投票人數:10人

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資訊 訂閱電子報



請為這篇文章評分?