当前位置: 首页 > 后端技术 > Python

用股市找那些有问题的上市公司

时间:2023-03-26 19:08:53 Python

当某只股票不断下跌时,你可以确定这只股票一定有问题,要么是它的市场,要么是它的公司。——利弗莫尔因此根据他最近的研究提出了这个比较新颖的想法:利用股票市场寻找存在或潜在食品安全问题的公司。你为什么会有这个想法?我们知道,食品安全事故发生的时间和媒体报道的时间其实是有差距的,但是利益相关者和知情人可以提前知道事件的发生。例如,2012年11月19日,酒鬼酒被国家质检总局曝光增塑剂超标247%。2012年11月16日回落至46元,但2012年11月19日国家质检总局发布消息,而且这样的跌幅明显与该股当时的上涨趋势背道而驰。10月底,其股价已突破周K压力线,却异常下跌?而且还突破了1号、14号、16号等多项技术指标,KDJ、BOLL指标明显上涨。异常坠落。2012年11月19日消息公布后,紧急停牌。复牌后三连跌停,股价暴跌48%。不过,我相信有些人已经成功地避免了这场股市灾难。寻找存在或可能存在食品安全问题的公司,重点在于两个方面:1、在板块或股票走势强劲的情况下,该股连续多日下跌2、涨停板异常如果我们公布消息如果我们能够在/(不发布)之前提前捕捉到这种异常信息,就可以提前捕捉到某个食品安全问题,也可以规避投资风险。当然,这种异常的可能性有很多种,这种异常也只能作为一个参考。现在让我们尝试使用Python来寻找具有第一趋势的公司。当然,最后我不会公布结果。有兴趣的可以自己试试:先用tushare找食品安全相关的上市公司:`importtushareasts``deffood_codes():``data=ts.get_industry_classified()``printdata[data.c_name.isin(['食品工业','农药化肥','酒业'])]`得到结果:移动平均线是我们要获得股票走势的基础,我们来写移动平均线函数:`defget_ma(code,start='',end=datetime.date.today().strftime("%Y-%m-%d")):``data=ts.get_k_data(code)``data=data.sort_index(ascending=False)``data['ma2']=data['close'].rolling(2).mean().shift(-1)``data['ma5']=data['close'].rolling(5).mean().shift(-4)``data['ma10']=data['close'].rolling(10).mean().shift(-9)``data['ma20']=data['close'].rolling(20).mean().shift(-19)``data['ma60']=data['close'].rolling(60)。mean().shift(-59)``data['ma240']=data['close'].rolling(240).mean().shift(-239)``data['date']=pd.to_datetime(data['date'])``ifstart=='':``returndata``start=pd.to_datetime(start)``end=pd.to_datetime(end)``ifdata['date'][len(data)-1]=start)&(data.date<=end)]`我们只需要确认两点:1.取20笔交易当天是最高价与最低价之差大于其最高价15%的窗口期2.股票处于上升趋势。`defanalyzeOne(code):``rng=pd.date_range('2018-1-1',datetime.date.today().strftime("%Y-%m-%d"),freq='D')``#getdate``flag=0``foriinrange(20,len(rng)):``data=get_ma(code,rng[i-20],rng[i])``count=0``data=data.sort_index(ascending=True)``#Ascending``max=data['close'][data['close'].argmax()]``min=data['close'][data['close'].argmin()]``forjinrange(len(data)):``ifdata.iloc[j]['ma5']>=data.iloc[j]['ma20']和data.iloc[j]['ma20']>=data.iloc[j]['ma60']和\``data.iloc[j]['ma60']>=data.iloc[j]['ma240']:``count=count+1``ifcount>=5and(max-min)-max*0.15>0:``print'Code:'+str(code)+',Problem:'+str(rng[i-20])+''+str(rng[i])``else:``count=0`如果有这样的趋势,输出这个趋势的窗口时间段,当然是这个只是一个Roughmodel,结果可能会有很多意想不到的情况,但是我觉得已经足够给大家启发了。想应用到所有食品相关的股票:`deffind_down():``foriinfood_codes().code:``analyzeOne(i)`通过这个操作,我找到了两只相似的股票:但是这些股票没有新闻报道出了问题,最后让我怀疑自己模型的准确性,到底是正常的市场波动,还是这家公司的问题。因此,该模型有很大的优化空间。如何通过股市最准确地识别出那些存在问题的公司,还有待进一步研究。本实验仅提出初步模型和一些思路。个人愚见,欢迎讨论。这是我们文章的结尾。如果喜欢今天的Python实战教程,请继续关注Python实战宝典。有问题可以在公众号后台回复:进群,回答对应的红字验证信息,进入互助群提问。原创不易,希望大家能在下方点赞观看支持我继续创作,谢谢!点击下方阅读原文,更好的阅读体验Python实战宝典(pythondict.com)不只是合集欢迎关注公众号:Python实战宝典