股息率的计算排除了 送股 配股的股票 。 包括了上一年的中期分红。抽查了几个数据,有几条数据业绩同比 是不正确的。。。。
from jqdata import finance
import pandas as pd
import datetime
#auth('***','**')
pd.options.display.max_rows = 4000
pd.options.display.max_columns = 50
pd.options.display.width = 1000
date_now = datetime.datetime.now()
current_year = datetime.datetime.now().year
oneDay = datetime.timedelta(days=1)
yesterday = (date_now - oneDay).strftime("%Y-%m-%d")
today_date = date_now.strftime("%Y-%m-%d")
security_list = get_index_stocks('000985.XSHG')
year = '2017-12-31'
q = query(finance.STK_XR_XD.code,
finance.STK_XR_XD.report_date,
finance.STK_XR_XD.bonus_type,
finance.STK_XR_XD.bonus_ratio_rmb/10 ,
finance.STK_XR_XD.company_name,
).filter(
finance.STK_XR_XD.report_date >= year,
finance.STK_XR_XD.bonus_ratio_rmb >0,
finance.STK_XR_XD.dividend_ratio == None,
finance.STK_XR_XD.transfer_ratio == None
)
df = finance.run_query(q)
df = df.groupby('code')["anon_1"].sum().to_frame()
pd_price = get_price(security_list, end_date=today_date, frequency='1d', fields=['close'],fq='pre', count=1)['close']
df_price = pd_price.T
stocks = get_all_securities(types=['stock'], date=None)['display_name']
df_funds = get_fundamentals(query(
indicator.code,
indicator.inc_net_profit_year_on_year,
valuation.market_cap
).filter(
valuation.code.in_(security_list)),
date= today_date)
df_funds.index = df_funds.code
pd_all = pd.concat([df , df_price, stocks , df_funds], axis=1)
pd_all.columns = ['每股分红', '当前价', '股票名','代码','最新利润同比增长率','最新市值']
pd_all['当前股息率'] = pd_all['每股分红']/pd_all['当前价']
pd_all = pd_all[ (pd_all['当前股息率'] >0.05) & (pd_all['最新利润同比增长率'] >5)].sort_values(by='当前股息率', ascending=False);
pd_all