簡單免費,利用python畫出單支股票的PE,PB趨勢


以前的文章的裡介紹瞭如何利用聚寬網站的資源來免費計算現在PE,PB分位數,不過有些人肯定還是不滿足,因為在某些網站上,通常不是直接給出數值而是給出圖來更形象一點。原因也很簡單,有的人是左側交易,有的則是右側交易,所以是否出現拐點,是這些投資者更關心的。

有錢的大戶可以選擇ichoice終端(幾千),稍微有錢的散戶可以選擇理杏仁這樣新興起的量化網站(幾百),但是如果水平不到或者覺得前面都是浪費錢的,其實可以有第三種選擇。

簡單免費,利用python畫出單支股票的PE,PB趨勢

還是拿聚寬網站來舉例,自己DIY的東西有個好處就是可以隨時根據自己的需要改,譬如像我一樣覺得4萬億刺激帶來的短暫股市失真經常讓人摸不到頭腦,就可以選擇將數值的起始日期選在2010年1月1號開始。

簡單免費,利用python畫出單支股票的PE,PB趨勢

登陸後,在【我的策略】,【投資研究】中新建一個python2的策略,粘貼下面的代碼後,就可以得出自己想要的pe和pb估值趨勢圖,當然,僅僅需要修改的是第60行的股票代碼哦

怎麼樣,下面的圖是否中意呢?

簡單免費,利用python畫出單支股票的PE,PB趨勢

'000963.XSHE' # 華東醫藥

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import bisect

import copy

# 得到該股票某一天的pe

def getPe(code,d):

q = query(

valuation

).filter(

valuation.code == code

)

df = get_fundamentals(q, d)

return df['pe_ratio'].values

# 得到該股票某一天的pe

def getPb(code,d):

q = query(

valuation

).filter(

valuation.code == code

)

df = get_fundamentals(q, d)

return df['pb_ratio'].values

# 得到該股票所有的pes

def getPes(code):

start='2010-1-1'

end = pd.datetime.today()

pes=[]

dates=[]

for d in pd.date_range(start,end,freq='d'): #頻率為日

# 剔除停盤日

if get_price(code,start_date=d, end_date=d ,frequency='daily', fields=['volume']).values != 0:

pes.append(getPe(code,d)[0])

dates.append(d)

return pd.Series(pes, index=dates)

# 得到該股票所有的pbs

def getPbs(code):

start='2010-1-1'

end = pd.datetime.today()

pbs=[]

dates=[]

for d in pd.date_range(start,end,freq='d'): #頻率為日

# 剔除停盤日

if get_price(code,start_date=d, end_date=d ,frequency='daily', fields=['volume']).values != 0:

pbs.append(getPb(code,d)[0])

dates.append(d)

return pd.Series(pbs, index=dates)

# print(get_price('000625.XSHE', start_date='2015-04-30', end_date='2015-04-30', frequency='daily', fields=['volume']).values)

print ('今天是: ',pd.datetime.today())

code ='000963.XSHE' # 華東醫藥

df=pd.DataFrame()

df['pe']= getPes(code)

df['pb']= getPbs(code)

df.plot(figsize=(12,10))


分享到:


相關文章: