(supermind策略)换手率3%-12%、北京A股除外、(昨日换手率_(今日竞价成交量

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

问财量化选股策略逻辑

选股逻辑为:在换手率3%-12%,剔除北京A股的基础上,选取昨日换手率乘以今日竞价成交量与昨日成交量的比值大于0.5小于2的股票进行选股。

选股逻辑分析

该选股逻辑的策略是从换手率的角度出发,选出有一定量能的股票。但是该选股逻辑没有考虑其他重要的因素,如股票市值、盈利情况等,容易忽略股票的内在价值。

有何风险?

该选股逻辑的风险包括:1. 只从量的角度出发容易忽视股票的价值特征;2. 过于注重短期量能变化,可能导致无法捕捉长期趋势。

如何优化?

  1. 综合量价趋势进行选股。
    除了换手率和成交量等基础指标,还要关注股票的价格走势、均线走向等因素,以综合判断股票趋势。

  2. 选用更可靠的成交量计算方式。
    考虑选用更准确的计算方式,如以5日成交量的均值为基准进行计算,避免由于季节性变化等原因导致数据波动。

最终的选股逻辑

在换手率3%-12%,剔除北京A股的基础上,选取5日均值的成交量乘以昨日换手率与今日竞价成交量的乘积大于0.5小于2的股票进行选股。

同花顺指标公式代码参考

选股逻辑中需要用到计算昨日换手率乘以今日竞价成交量与昨日成交量的比值,通达信中的指标为:YEDATVOL * (1 + (VOL - YESTD)/YESTD) / LASTDAYVOL

Python代码参考

import pandas as pd
import tushare as ts

def get_good_stocks():
    ts.set_token('your_token')
    pro = ts.pro_api()

    trade_cal = pro.trade_cal(exchange='', start_date='20210201', end_date='20210228', fields='cal_date,is_open')
    week_date = trade_cal[trade_cal.is_open == 1].iloc[::5, :].reset_index(drop=True)
    week_date = week_date.iloc[-1]['cal_date']
    stock_list = pro.stock_basic(exchange='', list_status='L', fields='ts_code,name,industry,market_cap')
    stock_list = stock_list[(stock_list['name'].str.contains('ST') == False) & (stock_list['market_cap'] > 100000)]
    good_stocks = []
    for ts_code in stock_list['ts_code']:
        daily = pro.daily(ts_code=ts_code, start_date=week_date, end_date=week_date)
        if daily.empty:
            continue
        daily_pre = pro.daily(ts_code=ts_code, start_date=pd.to_datetime(week_date)-pd.Timedelta(days=1), end_date=pd.to_datetime(week_date)-pd.Timedelta(days=1))
        if daily_pre.empty:
            continue
        daily_today = pro.daily(ts_code=ts_code, start_date=pd.to_datetime(week_date)+pd.Timedelta(days=1), end_date=pd.to_datetime(week_date)+pd.Timedelta(days=1))
        if daily_today.empty:
            continue
        last_day_vol = daily_pre.iloc[0]['vol']
        vol = daily_today.iloc[0]['vol']
        yestd = daily.iloc[0]['pre_close']
        yedatvol = daily_pre.iloc[0]['vol']
        if (yedatvol * (1 + (vol - yestd) / yestd) / last_day_vol > 0.5) and (yedatvol * (1 + (vol - yestd) / yestd) / last_day_vol < 2):
            good_stocks.append([ts_code, stock_list[stock_list.ts_code == ts_code].iloc[0].name, stock_list[stock_list.ts_code == ts_code].iloc[0].industry])
    good_stocks = pd.DataFrame(good_stocks, columns=['ts_code', 'name', 'industry'])
    return good_stocks

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

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

    模板如何使用?

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


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

评论