(supermind)振幅大于1、9点25分涨幅小于6%、归属母公司股东的净利润(同比增长

用户头像神盾局量子研究部
2023-08-21 发布

问财量化选股策略逻辑

选股逻辑为:振幅大于1、9点25分涨幅小于6%、归属母公司股东的净利润(同比增长率)大于20%小于等于100%,选择符合条件的股票作为选股对象。该选股策略主要关注股票的估值和基本面,旨在挖掘有成长性的股票,做长期投资。

选股逻辑分析

该选股逻辑既关注股票的短期波动性,又关注企业的基本面情况,旨在挖掘有成长性的股票。通过振幅限制来筛选市场抖动较大的股票,通过9点25分涨幅小于6%筛选出没有涨幅过大的个股,通过归属母公司股东的净利润(同比增长率)大于20%小于等于100%来筛选有成长性的企业。这种选股方法比单纯关注技术面或基本面更全面,更符合长期投资的逻辑。

有何风险?

该选股逻辑仍然存在一定的风险,一方面是该选股策略对基本面因素的关注不够全面,例如企业的负债情况、现金流情况等变量未考虑,会影响企业的长期价值。另一方面,该选股策略没有设置股票价值因素的限制,有可能选出过于高估的股票,带来投资风险。

如何优化?

可以引入更多的基于公司基本面、市场环境、技术面的指标作为选股依据,更全面地衡量股票的投资价值。进一步,可以使用机器学习等算法对选股策略进行优化,提高选股策略的稳定性和精准性,增加投资回报。

最终的选股逻辑

选股逻辑为:振幅大于1、9点25分涨幅小于6%、归属母公司股东的净利润(同比增长率)大于20%小于等于100%,以技术面和基本面指标为主选择有成长性的股票作为选股对象。该选股策略旨在寻找合理的股票估值和有成长性的企业,适合长期投资,但需要根据情况退出部分仓位和进行风险控制。

同花顺指标公式代码参考

FZ_RANGE > 1 AND LAST<=LAST[1]*0.06 AND (LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER/LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER.shift(12)-1)>=0.2 AND (LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER/LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER.shift(12)-1)<=1

其中FZ_RANGE表示振幅的大小,LAST表示当天的收盘价,LAST[1]表示前一天的收盘价,LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER表示归属母公司股东的净利润。通过以上指标查找符合条件的股票。

Python代码参考

import tushare as ts
from datetime import datetime, timedelta

def get_selected_stocks():
    pro = ts.pro_api()
    selected_stocks = []
    for ts_code in pro.stock_basic(exchange='', list_status='L', fields='ts_code').values.tolist():
        # 振幅大于1
        k_data = pro.daily(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=30)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,high,low')
        highest_price = k_data['high'][0]
        lowest_price = k_data['low'][0]
        for idx, k in k_data.iterrows():
            if idx > 5:
                break
            if k['high'] >= highest_price:
                highest_price = k['high']
            if k['low'] <= lowest_price:
                lowest_price = k['low']
        if highest_price / lowest_price <= 1:
            continue
        
        # 9点25分涨幅小于6%
        tick_data = pro.tick(ts_code=ts_code[0], date=datetime.now().strftime('%Y%m%d'))
        current_price = tick_data[tick_data['time'] == '09:25:00']['price'].values[0]
        pre_close = pro.daily(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=6)).strftime('%Y%m%d'), end_date='', fields='ts_code,trade_date,close', freq='1D').iloc[1]['close']
        if current_price / pre_close >= 1.06:
            continue
        
        # 归属母公司股东的净利润(同比增长率)大于20%小于等于100%
        income_statement = pro.income(ts_code=ts_code[0], start_date=(datetime.now()-timedelta(days=480)).strftime('%Y%m%d'), end_date=datetime.now().strftime('%Y%m%d'), fields='ts_code,ann_date,report_type,total_profit,n_income,net_profit')
        income_statement['report_date'] = pd.to_datetime(income_statement['ann_date'], format='%Y%m%d')
        income_statement = income_statement[income_statement['report_type'] == '1']
        income_statement.sort_values(by='report_date', inplace=True)
        income_statement['LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER'] = income_statement['net_profit']/income_statement['net_profit'].shift(4) - 1
        if income_statement['LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER'].iloc[-1] < 0.2 or income_statement['LYR_NET_PROFIT_PARENT_COMPANY_SHAREHOLDER'].iloc[-1] > 1:
            continue
        
        selected_stocks.append(ts_code[0])
    
    return selected_stocks

在Python代码中,同样使用tushare库获取股票数据,进而筛选符合条件的股票。通过振幅、涨幅和归属母公司股东的净利润(同比增长率)等判断个股波动性情况和股票成长性,根据以上指标寻找有投资价值的股票。

    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

    select_sentence = '市值小于100亿' #选股语句。

    模板如何使用?

    点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。


    ## 如果有任何问题请添加 下方的二维码进群提问。
    ![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
收益&风险
源码

评论