价值投资/指标选股(akshare)

68 篇文章 14 订阅
28 篇文章 24 订阅

利用akshare的数据源,可以获取所有的股票数据以及公开的财务数据,可以进行条件筛选,获取满足条件的股票。

        这套模板可以用于价值投资,指标选股。选股周期为日线级别。然后结果可以邮箱发送。

import time
import akshare as ak
## A 股上市公司的实时行情数据
stock_zh_a_spot_df = ak.stock_zh_a_spot()
#print(stock_zh_a_spot_df)
##取前300测试
##取前300测试
df_stock = stock_zh_a_spot_df[['代码','名称']][:20]
anyData = {'stock':'00','name':'name_test','指标1':'var1','指标1':'var1','指标2':'var2','指标3':'var3','指标4':'var4','综合评估':'varAll'}
dfResult = pd.DataFrame(anyData,index=[0])
 
for row_index, row in df_stock.iterrows():
    try:
    # print(row['code'])
    # print(row['name'])
        r_code = row['代码'][2:]
        r_name = row['名称']

        print(r_code)
        ##指标1 - 过去5年来平均净资产收益率高于14%
        df = ak.stock_financial_analysis_indicator(r_code)# 财务指标数据 工行财报
        # print(df.head())
        df = df.set_index(df['日期'])
        print(df.head())
        df1 = df[df.index>'2015-01-01']['净资产收益率(%)']
        df1_sum = df1.replace('--',0).astype(float).sum(axis = 0, skipna = True)
        df1_count = df1.count()
        var1 = (df1_sum / df1_count)>14

        ##指标2- 市盈率低于30 并且大于 0 
        day = (datetime.datetime.now()- datetime.timedelta(days=30))
        dateStart = datetime.datetime(day.year, day.month, day.day, 0, 0, 0)##过去30天的数据
        dateStart = datetime.datetime.strptime(str(dateStart),'%Y-%m-%d %H:%M:%S')
        dateStart = datetime.datetime.date(dateStart) 
        df2 = ak.stock_a_lg_indicator("601398")
        df2_mean = df2[df2.trade_date >dateStart ].pe.mean()
        var2 = df2_mean >0 and df2_mean < 30


        #指标3:经营现金流为正

        df3 = df#财务指标数据
        var3 = float( df3['每股经营性现金流(元)'].iat[1] ) > 0
        # print(var3)

        #指标4:新期的净利润大于前5年的净利润 取万元

        var4_1 = float(df3['扣除非经常性损益后的净利润(元)'].iat[1])/ 10000 
        var4_2 =  df3['扣除非经常性损益后的净利润(元)'].iloc[2:8].astype(np.float).max()/10000 

        var4 = var4_1 > var4_2

        ##综合评估

        varAll = var1 and var2 and var3 and var4
        if varAll == True:
            print(row)
        anyData = {'stock':r_code,'name':r_name,'指标1':var1,'指标1':var1,'指标2':var2,'指标3':var3,'指标4':var4,'综合评估':varAll}
        df_idex = row_index+1
        dfResult.loc[df_idex] = anyData
        print(dfResult)
    except:
        continue
    #time.sleep(7)
    

这里的指标可以重新写,重新添加。自己习惯增加。

 

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神出鬼没,指的就是我!

必须花钱,数据超好

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

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

打赏作者

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

抵扣说明:

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

余额充值