了解股票:
在上一次https://www.cnblogs.com/webor2006/p/15089817.html對於量化的概念有了一個基本認識,其中量化的主體在這門課程的學習中是“股票”,而當別人問你:“什么是股票?”,是不是覺得特弱智,嗯,接下來就回到這個弱智的問題上來當個故事了解一下它。。
股票的由來:
股票最早可以起初到17世紀初的荷蘭,那個時候香料貿易是很掙錢的,所以荷蘭就會有船商開船出去運貨:
但是!!!很顯然開船是有風險的,畢竟海上的環境是變化多端的, 所以經常有可能船有去無回,對於船商來說就是一種損失,所以后來就有人看到這樣的困境組織成立了一家公司---東印度公司,由很多船商作為股東,然后開始找人投資,說把一個憑證給你,其實就是所說的股票的證券,代表你投資了多少錢給我,這樣你也可以成為公司的股東享受利潤分紅:
慢慢這么的形式就影響開來了,而在這個過程中大家肯定也會去交易這個憑證,比如說:我要急着用錢就賣出手中的一些憑證,或者說聽到有一些負面消息不看好這次出行則會買別人的一些憑證,這其實就是最開始的股票交易。
后來就發展成了我們所熟知的交易所方便進行股票的買賣,以及基於股票的投資組合和衍生品等,所以股票是:股份公司發行的所有權憑證,代表的是一種投資工具、投資介質。
股票的特性【當個笑話看】:
這里以股票、基金、債券三者放一起來看。
概述上:
- 股票它是股份公司的所有權憑證、盈虧自負。
- 基金它是一種投資組合(股票、債券、現金)。
- 債券它是還本付息的有價證券(國債、企業債、金融債券)
風險上:
股票(10%) > 基金(5%)> 債券(1%)
收益上:
股票 > 基金 > 債券
獲取股票數據的3種方式:
作為個人投資者,或者普通投資者,最常用的數據獲取方法就是各種炒股平台和金融數據服務端,那如果是量化開發者的話,其實也能從這上面獲取數據,怎么獲取呢?就是寫爬蟲對吧。
1、什么是爬蟲呢?
爬蟲其實就是利用網頁的結構和標簽,把想要的信息扒下來,這個扒可以用很多方式,比如Python的Beautifulsoup或者lxml都可以。但是,這種方式費時費力,而且網站有時候也會出問題,那么連帶着程序就會出問題,比如意外中止,或者有缺失值之類的。
所以,更成熟的方式,就是找現成的數據接口,其中數據接口又分為免費和付費的。
2、免費的數據接口【咱們所采用的方式】:
免費的數據接口比較出名的就是各種量化平台,比如天勤量化、BigQuant、JoinQuant(聚寬)等,一般它們都會提供成熟的數據接口讓你調用。
基礎的數據,比如每天的行情、財務數據、技術指標這些,都是免費的。但如果需要更高階、更復雜的合成技術指標,或者編寫好的量化策略之類的,就會要求你升級購買。總體來說,也是划算了,省掉了重復造輪子的精力。
當然了,如果你願意進一步鑽研的話,在GitHub等開源網站上,也有許多現成資源可以利用。
3、付費的數據接口:
金融接口,比較出名的有Wind和彭博,提供秒極的行情數據。換句話說,你可以實時獲取到最新最精准的交易數據。
通常這一類數據接口,會按照需要的數據量、使用人數,以及行情的精確程度等收費。按照我以往的使用經驗,每年的數據采購費至少在1萬以上,如果涉及高頻交易,費用至少在3萬以上,上不封頂。
以上,就是獲取股票等金融數據的3種方式了,它們分別是:爬蟲獲取、免費接口調用,以及購買和定制現成的數據服務。
使用JQData查詢行情數據:
JointQuant了解:
如標題所示,提到了“JQData”,其中的JQ就是JointQuant的縮寫,官網為https://www.joinquant.com/:
而我們想要的是獲取股票數據,所以可以從菜單欄這塊看過來:
先來看一下數據字典:
點進去之后,就有很詳細的說明文檔:
好,大致了解一下,接下來再來看一下對咱們python編程有用的這個菜單:
具體介紹可以上官網,下面直接開始進入使用環節。
JQData開通:
要使用之前先需要進行賬號開通,如何開通呢?
免費可以試用半年,那好,提交試用申請:
然后點擊確認就可以注冊成功了:
安裝使用JQData:
安裝JQData:
這里先利用PyCharm新建一個工程:
然后在工程終端中安裝一下:
獲取股票行情數據:
1、獲取某股的行情數據:
接下來咱們嘗試來獲取一下股票行情數據,找到相關接口說明:
注意,所有接口必須先登錄哦:
下面咱們來試試看能否正常獲得股票行情數據:
from jqdatasdk import * auth('用戶名', '密碼') # 賬號是申請時所填寫的手機號;密碼為聚寬官網登錄密碼,新申請用戶默認為手機號后6位 # 獲取平安銀行在2021-08-20號之前的四個交易日的股票行情日k數據 df = get_price('000001.XSHE', end_date='2021-08-20', count=4, frequency='daily') print(df)
注意:登錄的用戶名、密碼需要填寫你自己注冊的,這里由於涉及到個人手機號的隱私,所以這里就不貼出來了,運行:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/data/Stock.py auth success /Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 當前環境 pandas 版本高於 0.25,get_price 與 get_fundamentals_continuously 接口的 panel 參數將固定為 False(0.25 及以上版本的 pandas 不再支持 panel,如使用該數據結構和相關函數請注意修改) warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning) open close high low volume money 2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 Process finished with exit code 0
其中股票代碼中跟了一個“XSHE”,它代表啥呢?其實文檔上有說明:
另外,這打印出來的數據是否真的跟真實的股票數據是相匹配的呢?所以咱們可以打開炒股軟件,對這輸出的四條數據進行一個驗證,這里以其中一條為准驗證一下就可以了:
對比一下咱們的輸出:
是不是准確的?
如果說我想獲取每分鍾的數據呢?這里只要更改這個參數既可:
2、獲取所有A股的行情數據:
那如果我想獲取所有A股的行情數據呢?依然看API說明:
其中給了一個示例:
那下面來使用一下:
所有標的獲取之后,就可以開始遍歷來獲取股票所對應的行情數據了,如下:
確實是獲取到了,總共A股有4569家。但是沒有真正顯示全呀,要想顯示全,這里可以采用數組循環一個個股票行情進行輸出,如下:
運行:
使用resample函數轉化時間序列:
什么是resample函數?
它是Python數據分析庫Pandas的方法函數,它的主要作用就是用來轉換時間序列的頻次,並可以做一些統計匯總的工作,這里可以上官網瞅一眼:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html#
那“轉換時間序列的頻次”和“統計匯總”這倆功能主要指的是什么呢?下面以一個案例來理解一下它們。
轉換時間序列的頻次:
在股票中的K線中有日K和周K對吧?
那假如只能獲取到日K的數據,比如獲得了這么一周的日K股票行情數據:
而通過日K的數據是可以轉換成周K的,周K的定義其實是從日K中取出這些數據:
對於月K、年K基本規則都類似,這樣的轉換功能就可以用resample輕松的來實現。
統計匯總:
比如這里獲取到了一周的成交量信息:
如果要統計這一周的成交量之和,就可以使用resample.sum/.count來統計Sum = 720
使用:
這個函數有這么多參數,都是啥意思呢?其實了解具體參數的含義從官網的sample例子去理解是最容易的,下面先來理解一些常用的參數:
其中傳的“3T”參數是用的這個:
另外,還有一個比較常用的參數:
默認是left,那這個參數有啥作用呢?先來回到咱們看的這個示例中:
這默認是left的效果,那如果我們換成right呢?直接從結果來理解:
是不是此時取的就是每三分鍾最后一分鍾的時間?
是不是對於這個label參數就理解了。
轉換周期:日K轉換為周K:
這里先來獲取日K的數據,還是以中國平安為例:
輸出:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py auth success /Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 當前環境 pandas 版本高於 0.25,get_price 與 get_fundamentals_continuously 接口的 panel 參數將固定為 False(0.25 及以上版本的 pandas 不再支持 panel,如使用該數據結構和相關函數請注意修改) warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning) open close high low volume money 2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09 2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09 2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09 2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09 2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09 2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09 2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09 2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09 2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09 2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09 2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09 2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09 2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09 2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09 2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09 2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09 2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 Process finished with exit code 0
這里為了方便,增加一個周幾的字段信息,如何增加呢?在python中也很簡單,如下:
再運行:
那0代表周幾呢?這里可以點擊進去看一下源碼,里面有說明:
python真的挺強大的,獲得周幾信息直接調用一個函數就出來了,回頭對於python這門語言一定得要系統的學一學。
好,有了日K的源數據之后,就可以使用resample函數來實現周K的轉換了,這里先以獲取周K的開盤價數據為例,確保獲取沒問題再獲取其它的,如下:
其中resample中傳的"W"表示周,運行看一下:
其中對於轉換的時間,其實都是取的周日:
其中還有一個細節需要注意,就是需要定義一下df_week,不然會報錯的:
接下來就可以一口氣將周k的其它信息都獲取了,方式都類似:
運行結果:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py auth success /Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 當前環境 pandas 版本高於 0.25,get_price 與 get_fundamentals_continuously 接口的 panel 參數將固定為 False(0.25 及以上版本的 pandas 不再支持 panel,如使用該數據結構和相關函數請注意修改) warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning) open close high low volume money weekday 2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09 0 2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09 1 2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09 2 2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09 3 2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09 4 2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09 0 2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09 1 2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09 2 2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09 3 2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09 4 2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09 0 2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09 1 2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09 2 2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09 3 2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09 4 2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09 0 2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 1 2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2 2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 3 2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 4 open close high low 2021-08-01 19.96 17.69 19.99 17.24 2021-08-08 17.64 17.86 18.15 17.18 2021-08-15 17.91 19.89 20.58 17.84 2021-08-22 20.09 19.42 21.20 18.70 Process finished with exit code 0
關於數據的正確性可以自行去驗證,結果肯定是准確的。
匯總統計:統計一下月成交量、成交額(sum):
這個就比較簡單了,如下:
運行:
/Users/xiongwei/opt/anaconda3/bin/python3.8 /Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/Stock.py auth success /Users/xiongwei/opt/anaconda3/lib/python3.8/site-packages/jqdatasdk/api.py:34: PanelObsoleteWarning: 當前環境 pandas 版本高於 0.25,get_price 與 get_fundamentals_continuously 接口的 panel 參數將固定為 False(0.25 及以上版本的 pandas 不再支持 panel,如使用該數據結構和相關函數請注意修改) warnings.warn(PandasChecker.VERSION_NOTICE_MESSAGE, PanelObsoleteWarning) open close high low volume money weekday 2021-07-26 19.96 18.80 19.99 18.43 145130394.0 2.770237e+09 0 2021-07-27 18.87 17.76 18.99 17.60 135755148.0 2.461708e+09 1 2021-07-28 17.85 17.75 18.07 17.68 106299421.0 1.898563e+09 2 2021-07-29 17.91 17.96 18.24 17.78 87237812.0 1.566108e+09 3 2021-07-30 17.92 17.69 18.05 17.24 95015588.0 1.679747e+09 4 2021-08-02 17.64 18.01 18.14 17.18 115992263.0 2.056014e+09 0 2021-08-03 17.99 17.89 18.15 17.66 89694857.0 1.609423e+09 1 2021-08-04 18.04 17.81 18.07 17.60 72962008.0 1.300164e+09 2 2021-08-05 17.70 17.68 18.05 17.58 62157388.0 1.104903e+09 3 2021-08-06 17.55 17.86 17.90 17.45 56745413.0 1.005871e+09 4 2021-08-09 17.91 19.06 19.25 17.84 175279800.0 3.313803e+09 0 2021-08-10 19.09 19.73 19.98 18.90 130198844.0 2.535428e+09 1 2021-08-11 19.99 19.81 20.58 19.70 104830844.0 2.104975e+09 2 2021-08-12 19.79 19.89 20.30 19.63 66645800.0 1.330388e+09 3 2021-08-13 19.78 19.89 19.92 19.50 56288502.0 1.110191e+09 4 2021-08-16 20.09 19.95 20.20 19.57 62705022.0 1.247681e+09 0 2021-08-17 19.85 19.67 20.22 19.61 47602194.0 9.473855e+08 1 2021-08-18 19.67 20.62 21.20 19.55 133273216.0 2.732214e+09 2 2021-08-19 20.48 20.34 20.62 20.02 64997561.0 1.315320e+09 3 2021-08-20 19.97 19.42 20.07 18.70 161462793.0 3.119153e+09 4 open close high low volume(sum) money(sum) 2021-08-01 19.96 17.69 19.99 17.24 569438363.0 1.037636e+10 2021-08-08 17.64 17.86 18.15 17.18 397551929.0 7.076375e+09 2021-08-15 17.91 19.89 20.58 17.84 533243790.0 1.039479e+10 2021-08-22 20.09 19.42 21.20 18.70 470040786.0 9.361753e+09 Process finished with exit code 0
使用JQData查詢財務指標:
什么是財務指標?
說到財務,肯定是跟錢掛勾的,以一家企業為例,財務報表的構成如下:
關於這些都需要簡單了解一下,因為在之后的選股策略中會有用到的。
財務報表:
資產負債表:
它體現了企業的家底和負債情況,比如個人你有幾套房,幾輛車, 是全款買的還是借款買的,如果是借款那又有多少是借來的。
利潤表:
它體現了公司的盈利能力:賺了多少錢,如何賺的,其中隱含着對未來利潤增長的預期,也正是有這樣的一個預期,很多公司的股價是遠超它現實真實的公司內在價值的,典型的像很多國內的上市公司在上市后,其實公司的盈利情況是負增長,那為啥這些公司的股價就是長得很好呢?這就是由於“預期”不同,因為大家都預期這家公司未來是很賺錢的,也就是這張表能體現市場空間、成長能力。
現金流量表:
這張表相比上面的兩張表它會更加真實,不容易造假,為啥呢?因為上面兩張表是基於“權責發生制”這一會計制度來進行編制的,那這種編制有什么特點呢?比如我和你簽合同,里面涉及到1000萬的訂單的款項,只要簽了立馬就可以記賬到預收款項里面了,就可以說我已經有1000萬的利潤了,此時會記錄到利潤表中的;但是現金流量表則不一樣,它是“收付實現制”,只有1000萬真的打進到我的賬戶里才會記錄到利潤表中的。
所以,現金流能體現公司的造血能力、競爭優勢、議價優勢,在挑選股票看公司基本面時,是一個非常重要的指標。
使用:
尋找相關接口信息:
上JQData官網找一下相關查財務指標的接口:
其中有兩類財務數據獲取的接口:
其中“單季度/年度財務數據”是指的每個季度或年度的財務數據,比如我想獲取第三季度的數據,則只包含第三季度的,不會累加之前的,而“報告期財務數據”則有累加的意思,比如半年報則包含第一季度和第二季度的。
下面來對咱們要學習的接口進行一個簡要的概覽:
接下來咱們就准備嘗試獲取一下財務指標數據:
代碼編寫:
咱們換2020年度的:
要讓其顯示全,需要設置一下,如下:
再運行,可以看到一大堆打印:
將數據導出到excel中:
由於數據量巨大,控制台不方便查看,這里將其導到excel表中,具體做法如下:
'''獲取股票財務指標''' df = get_fundamentals(query(indicator),statDate='2020') # print(df) df.to_csv("/Users/xiongwei/Documents/workspace/python/QuantitativeTrading/studycode/data/finance/finance2020.csv")
此時運行一下,成功的話excel報表就生成了:
此時用excel打開就比較好查看了:
數據字段了解:
一大堆字段都啥意思呢?可以參考官網,都有解釋:
咱們粗略的簡單過一些,有個大概了解,因為之后會要用一些字段當過濾條件來進行選股。
statDate:
財報統計的季度的最后一天, 比如2015-03-31, 2015-06-30。
如咱們導出的表中,表示2020年一整年的數據。
pubDate:
公司發布財報日期,一般是每年的4月份會出【也有晚於4月的,但是少數,基本都會在4月份之前出來】,每個公司出的時間都不太一樣,看一下咱們導的數據:
也有最晚7月份發布的:
eps:
每股收益EPS(元),用凈利潤 / 股本數,比如公司將股本數划為1000份,凈利潤/1000就是eps, 這個值越高越好,代表公司的盈利能力。
operating_profit:
經營活動凈收益(元),營業總收入-營業總成本,通俗理解就是我掙了多少錢,然后減去我花了多少錢,該值也是越高越好。
其中可以看到,有些公司是負數的,那肯定公司的基本面是不太好的。
roe:
凈資產收益率ROE(%),這個在之前有提到過,它的計算公式是“歸屬於母公司股東的凈利潤*2/(期初歸屬於母公司股東的凈資產+期末歸屬於母公司股東的凈資產)",這個有啥意義呢?其實相當於一個公司資產的產出,舉例說明:有兩家白酒公司,它們的規模機器情況都差不多,但是公司A一年的產能對應的銷量是1000萬,公司B卻只有100萬,很明顯公司A的ROE要高對吧,因為同樣的資產它獲得的利潤更多。
其中也可以看到有負的。
inc_net_profit_year_on_year:
凈利潤同比增長率(%),也就是今年的凈利潤跟去年的凈利潤增長的百分比,比如今年的凈利潤是200萬,而去年的凈利潤是100萬,那么這里的值就是200-100,增長了100萬,然后除以期初的100萬,同比增長度就是100/100。
inc_operation_profit_annual:
營業利潤環比增長率(%),由於咱們這邊統計的是年,環比跟上面的同比是一樣的,所以可以看到在報表中這一列是空的:
根據財務指標條件過濾股票:
好,對於財務指標中的關鍵字段進行了了解之后,那么重點來了,怎么來通過這些指標來篩選出健康贏利良好的公司呢?
1、eps肯定是要大於0對吧,最起碼該公司是賺錢的。
2、operating_profit需要大於一個均值,這里在excel取這一列的平均值吧:
所以條件加上:
3、roe也取一個均值:
所以條件加上:
4、inc_net_profit_year_on_year:這里凈利潤同比增長率定個10吧,如下:
此時再輸出看一下,經過條件過濾之后,整個A股中滿足條件的股票有多少:
瞬間縮到307家了,這樣選出來的最起碼基本面是好的,當然這個條件可以根據自己的要求來進行更改。
使用JQData查詢估值指標:
有哪些估值方法?
在A股投資中有一些價值投資喜歡根據企業的估值是高估還是低估來決定買賣決策對吧,所以需要對於估值方法有一定的了解,這里了解兩種估值方法。
絕對估值:
它是一種定價模型,也就是計算企業的內在價值,看這么一張計算表格:
思想是先獲取公司的近N年的現金流情況:
然后來預測未來的現金流情況:
然后再根據預測的這些數據來進行折現,也就是算出未來五到十年它的價格換算成現在的價格是多少錢,來判斷當前的投價到底是貴還是便宜來決定咱們買還是不買它,這也就是典型的估值買入法,一家公司越值錢通常它的股價也是越貴的,而對於投資者來說,就是找到一家公司未來不錯,但是呢股價現在處於低估的公司,這也就是掙錢的關鍵:利用公司本身的價值和它在市場價格的差價,這也是就是大神巴菲特所說的價值投資。
在絕對估值法中,有一個非常重要的指標就是折現率:
它可以理解為未來的錢轉換為現在的錢要消去多少,這里設置的是10%,它是根據個人的情況可以更改的【正因為這是一個主觀的因素,所以實際用這種方式不太靠譜,因為不同的人算出來的估值情況是不一樣的】,所以這個值的設定不同,直接就會影響到對企業的估值的計算,也就是這塊的結果:
其中這個估值表很明顯可以做為自己買賣的決策了,看這:
當前股價遠遠大於分析該企業應該值的價格,屬於高估狀態,那高估狀態下的股票,為了穩妥,你會選擇買么?
這個方法,你要明白的是因為折現率是可以人為設定的,很明顯其算出來的估值會有很大的偏差的,當然也極大的會影響到咱們的買賣決策結果 ,所以常見的估值法就會用相對估值了。
相對估值:
它其實就是使用PE市盈率、PB市凈率、PS市銷率的估值指標,關於這三者的計算方法可以參照如下表:
那為啥這是屬於“相對”估值呢?因為這些指標的大小是取決於同行業其它公司的,也就是通過比較來實現的。
使用JQData查詢估值指標:
API了解:
好,還是回到咱們的python世界,來看一下如何來獲取這些估值指標:
其中就有我們想要的估值數據:
實現:
咱們來獲取一下:
這樣就獲取了所有股票市值和估值相關的數據了, 好,那這些數據肯定是為了選股用的對吧,在上次咱們已經篩選出了健康的公司了:
那我想再根據估值指標,進一步篩選我想買的公司的股票,那怎么結合起來使用呢?其實也很簡單,因為財務指標和估值指標都有一個code是可以進行匹配的,所以可以把估值指標中的pe數據追加到財務指標中新增一列,如下:
好,此時我們就可以加上pe的條件了,比如我只想要pe<50的股票,那么可以這么弄:
總結:
至此,咱們已經學會了如何通過Python編程來獲取到股票的一些數據了,當然啦離通過編程來影響咱們炒股的決策這一目的還差很遠很遠,但是它是一個基石,沒有數據何談量化,所以循序漸進慢慢來,另外就是對於Python這門語言,我已經下定決定在未來的某時會從0基礎來重新好好的審視一下它,真的太強大了。