(supermind策略)换手率3%-12%、k小于20、资金强度由大到小_

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

问财量化选股策略逻辑

选股逻辑为:在换手率3%-12%、K小于20的前提下,根据资金强度由大到小,选择最具投资价值的股票作为买入信号。

选股逻辑分析

该选股策略主要考虑股票的流动性(换手率)和股票的技术面(KDJ指标),并根据资金强度选取最具投资价值的股票作为买入信号。

资金强度是根据当天的资金流入流出量计算得出,表征了市场对于该股票的投资程度。资金强度越大,说明市场对该股票的看好程度越高,投资价值也更高。

有何风险?

这种策略在选择股票时主要侧重资金流入流出量,忽略了股票基本面和市场环境等因素,只关注单一指标而忽视了多因素综合分析的风险。同时,资金流入流出量不仅与市场热度有关,还与公司股票配股、股票增发等事件有关,可能存在市场噪音的影响。

如何优化?

可以在选择股票时,综合考虑公司财务状况、行业发展趋势、基本面分析、技术指标等因素,制定综合而完善的选股策略。同时,可以分别考虑不同时间段的资金流入流出量(例如3日、5日、10日资金流入流出量),并结合其他指标进行多角度分析。

最终的选股逻辑

在换手率3%-12%、K小于20的前提下,根据资金强度(例如5日资金流入流出量)由大到小排列,选择前N只股票作为买入信号。同时,需结合公司财务状况、行业发展趋势、基本面分析和技术指标等因素进行多角度综合分析,制定综合而完善的选股策略。

同花顺指标公式代码参考

选股条件:SETPRICETYPE(1); VOLUME>0; (K<20) AND (NOT INDUSTRYCODE='932' OR INDUSTRYCODE='914'); C > REF(C,1) AND (C-MA(C,20))/MA(C,20)>FILTER(0,(F2>F1),0)
选股结果:fml('SETPRICETYPE(1); VOLUME>0; (K<20) AND (NOT INDUSTRYCODE='932' OR INDUSTRYCODE='914'); C > REF(C,1) AND (C-MA(C,20))/MA(C,20)>FILTER(0,(F2>F1),0);','desc', 'market_cap', 100)

Python代码参考

import tushare as ts
import pandas as pd

# 筛选好股票函数
def select_good_stocks(day):
    # 换手率3%-12%
    basic_info = ts.get_stock_basics()
    good_stocks = basic_info[(basic_info['turnoverratio'] >= 3) & (basic_info['turnoverratio'] <= 12)]

    # K小于20,非科创板,资金强度由大到小
    good_stocks['资金强度'] = ts.get_sina_dd(stock, date=day, vol=1000000)['net']
    good_stocks.sort_values(by='资金强度', ascending=False, inplace=True)
    good_stocks.drop(['资金强度'], axis=1, inplace=True)
    for stock in good_stocks.index.tolist():
        df1 = ts.get_k_data(stock, ktype='D')
        if len(df1) <= 0:
            continue
        # 判断是否为科创板股票
        industry_code = basic_info.loc[stock, 'industry_code']
        if industry_code == '932' or industry_code == '914':
            good_stocks.drop([stock], inplace=True)
            continue
        # 判断K值是否小于20
        if df1.iloc[-1]['K'] >= 20:
            good_stocks.drop([stock], inplace=True)
            continue
        # 判断涨幅
        if df1.iloc[-1]['close'] <= df1.iloc[-2]['close'] or df1.iloc[-1]['close'] <= df1['ma20'].iloc[-1]:
            good_stocks.drop([stock], inplace=True)

    return good_stocks

# 获取5日资金流入流出量
def get_fund_flow(day):
    dateList = []
    for i in range(5):
        dateList.append(pd.Timestamp(day) - pd.Timedelta(days=i))
    dateList.reverse()
    flows = []
    for day in dateList:
        df = ts.get_sina_dd_data('002230', date=day.strftime('%Y-%m-%d'), vol=2000)
        if len(df) <= 0:
            flows.append(None)
        else:
            flows.append(df['net'][0])
    return sum(flows)

day = '2021-09-01'
good_stocks = select_good_stocks(day)
good_stocks['5日资金流量'] = good_stocks.index.map(lambda x:get_fund_flow(day))
good_stocks.sort_values(by='5日资金流量', ascending=False, inplace=True)
print(good_stocks.head(20))
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论