【大麦小米学量化】使用一招搞定各种股票代码格式转换(含完整源代码)


前言

在量化实践过程中,经常因为不同库使用不同的股票代码形式,所以需要来回转换股票代码,以符合作业环境。为方便不同形式的要求,现将常用的格式做了函数,方便调用。

一、A股股票代码规则

股票代码是股票交易的身份证,每个代码都对应着不同的公司。

以上海证券交易所、深圳证券交易所、北京证券交易所股票为例,A股股票代码有如下规则:

1、上海证券交易所:

600 、601、603、605三位开头是A股上海证券交易所主板股票,688三位开头是A股上海证券交易所科创板股票。

2、深圳证券交易所:

000、002、003三位开头是A股深圳证券交易所主板股票,300、301三位开头是A股深圳证券交易所创业板股票。

3、北京证券交易所:

43、83、87、88新三板转上来到北交所的股票基础层43、创新层83、精选层87、新上北交所88开头。

除了以上,还有一些特殊的代码开头。沪市B股股票代码以900开头,以美元计价交易。深市B股股票代码以200开头,以港元计价交易。另,北交所刚刚启用920开头代码。

二、股票代码转换

根据规律,可总结出,6和900开头为上证,0,3,2开头为深证、4、8、920开头为北交所的股票代码。基于此,结合股票代码的转化要求,如将300750,转为300750.SH,我们使用如下方法调用即可。

# 代码转换类函数
def code2symbol(code,kind="code.sh"):
    '''根据code代码开头数字转为为标准的symbol'''
    xcode = ''.join(c for c in code if c.isdigit())
    kind_list = ['shcode','sh.code','code.sh','codesh']
    # kind转为小写,在以上列表内,则自动按相应格式进行转换;否则只反馈6位数字代码。
    if kind.lower() in kind_list:
        prefix = ''.join(c for c in kind.replace('code','') if c.isalpha())
        char   = '.' if '.' in kind else ''
        if   kind.lower() == "shcode" or kind.lower() == "sh.code": symbol = f'sh{char}{xcode}' if (xcode[0] == "6" or xcode[:3] == "900")  else f'sz{char}{xcode}' if (xcode[0] == "0" or xcode[0] == "3" or xcode[0] == "2")  else f'bj{char}{xcode}' if (xcode[0] == "4" or xcode[0] == "8" or xcode[:3] == "920") else code
        elif kind.lower() == "codesh" or kind.lower() == "code.sh": symbol = f'{xcode}{char}sh' if (xcode[0] == "6" or xcode[:3] == "900")  else f'{xcode}{char}sz' if (xcode[0] == "0" or xcode[0] == "3" or xcode[0] == "2")  else f'{xcode}{char}bj' if (xcode[0] == "4" or xcode[0] == "8" or xcode[:3] == "920") else code
        return symbol if prefix[0].islower() else symbol.upper()
    else:return xcode
    
if __name__ == '__main__':    
    code = '300750'
    print(code2symbol(code,kind="code.SH"))

运行结果为:300750.SZ


总结

这个函数考虑了股票常用的各种形式,包括大小写,调用的时候选择相应的kind即可。

看到这里,如果有帮助到你,不妨复制粘贴使用前先点个关注点个赞!后续还会继续分享妙招给大家。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值