欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

申万一级行业变化

程序员文章站 2022-07-13 15:15:10
...

 1、比较

'''
申万指数在2014-02-21有一次大改,删除了6个一级行业,并增加了11个一级行业。故:
date < 2014-02-21   申万一级行业有23个
date = 2014-02-21   申万一级行业有34个
date > 2014-02-21   申万一级行业有28个
'''
#date='2014-02-20',23个
code1 = jd.get_industries(name='sw_l1', date='2013-01-20')

#date='2014-02-21'有34个
code2 = jd.get_industries(name='sw_l1', date='2014-02-21')

#date='2014-02-22'有28个
code3 = jd.get_industries(name='sw_l1', date='2015-02-22')

申万一级行业变化

 2、聚宽数据问题

查询申万一级行业估值数据时,行业名称有问题

def get_sw1_valuation(start_date=None, end_date=None):
    #2014-02-22之后申万一级行业28个
    code = jd.get_industries(name='sw_l1',date='2014-02-22').index.tolist()
    days = jd.get_trade_days(start_date,end_date)
    index = jd.finance.run_query(jd.query(jd.finance.SW1_DAILY_VALUATION).filter(
            jd.finance.SW1_DAILY_VALUATION.date=='2014-02-22'
            ).limit(1)).columns.tolist()
    data =  pd.DataFrame(columns = index)
    for day in days:
        df=jd.finance.run_query(jd.query(jd.finance.SW1_DAILY_VALUATION).filter(
            jd.finance.SW1_DAILY_VALUATION.code.in_(code),
            jd.finance.SW1_DAILY_VALUATION.date==day
            ))
        name1 = set(list(map(lambda x:x[:-1],code3.name.tolist())))
        name2 = set(df.name.tolist())
        print(day)
        print(name1-name2)
        if not name1-name2:
            data = pd.concat([data, df], axis = 0, sort=False)
            break
    return data

df = get_sw1_valuation(start_date='2015-01-01',end_date='2020-05-01')  

申万一级行业变化

这里可以说明在2015-01-22之前申万一级行业名称有问题。(下图是debug得到的图)

申万一级行业变化

最后验证一下:(说明2015-01-22之后数据就没问题了)

name1 = set(list(map(lambda x:x[:-1],code3.name.tolist())))
name2 = set(df.name.tolist())

申万一级行业变化

 

相关标签: 多因子系列