请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3365806 新帖:13

计算指数当前PE

美联储主席发表于:5 月 10 日 00:53回复(1)

相关代码,我参考自社区。
麻烦大家帮我看一下 计算当前指数PE, 有没有问题,有没有误差。
我与其他平台提供的数据比较,PE不一样。

import jqdata
import pandas as pd
import numpy as np
import datetime

# 当前时间
nowDate = datetime.datetime.today()

# 指数列表
indexCodeList = (
                 '000015.XSHG', # 红利指数
                 '000922.XSHG', # 中证红利
                 '000016.XSHG', # 上证50
                 '000905.XSHG', # 中证500
                 '000300.XSHG', # 沪深300
                 '399934.XSHE', # 中证金融地产
                 '399933.XSHE', # 中证医药卫生
                 '399812.XSHE', # 中证养老
                 '399971.XSHE', # 中证传媒
                 '000827.XSHG', # 中证环保
                 '399975.XSHE', # 中证全指证券公司指数(四级行业)
                 '399006.XSHE' # 创业板指数
                )
# 获取指数的PE
def cac_index_pe(df):
    try:
        pe = sum(df['market_cap'])/sum(df['market_cap']/df['pe_ratio'])
    except:
        pe = float('nan')
    return pe

# 获取指数的名字
indexCodeInfo = get_all_securities(['index'],date = nowDate).loc[indexCodeList,'display_name']


result = {}
listDate = [nowDate]
for i, indexCode in enumerate(indexCodeList):
    stocks = get_index_stocks(indexCode, date=nowDate)
    if stocks == []:
        result.append(float('nan'))
    else:
        q = query(valuation.code, valuation.market_cap,
                  valuation.pe_ratio).filter(valuation.code.in_(stocks))
        df = get_fundamentals(q, nowDate)
        result[indexCodeInfo[indexCode]] = cac_index_pe(df)
    
pd.DataFrame(result, index = listDate)
    
.dataframe thead tr:only-child th { text-align: right; } .dataframe thead th { text-align: left; } .dataframe tbody tr th { vertical-align: top; }
上证50 中证500 中证传媒指数 中证全指证券公司指数(四级行业) 中证养老产业指数 中证医药卫生指数 中证环保 中证红利 中证金融地产指数 创业板指 沪深300 红利指数
2018-11-15 13:58:28.395347 9.208598 19.724569 22.587373 24.200811 19.432031 27.871471 19.251954 7.621092 7.915694 31.160384 10.729629 7.18628
 

全部回复

0/140

量化课程

    移动端课程