股票连续跌停后开板表现

简介:假设遇到连续跌停,2天
某天打开跌停,2种方式
1,如果开盘价就打开了跌停
考虑限价单形式,如果9.15前下限价单,价格>跌停+0.03,则涨停价买入(等价于市价买入,实际操作可能是昨收买入,否则点位太高未必有利润)
2,开盘价跌停,盘中打开
限价单,价格>跌停+0.03,一旦打开就买入
二者效果类似,
如果开盘价>今日跌停,成交价=开盘价+0.03
如果开盘价=今日跌停,成交价=跌停+0.03=开盘价+0.03
卖出价格为次日开盘价,

所以利润为:次日开盘-成交价=次日开盘-(开盘价+0.03)

其中:0.03为滑点, 由于条件单所以价格会有一定劣势

分析此种策略收益,同时为了进一步获得高收益,可对跌停原因进行分析,是短期噩耗还是长期消息,比如财务造假等会对企业造成本质伤害等需区分

 

以下代码可基于ricequant

import pandas as pd

stocks = all_instruments(type='CS', market='cn')['order_book_id']  # [context.market_index]

buy_profit_df = pd.DataFrame(columns=stocks)
for stock in stocks:
    print(stock)
    price_df = get_price(stock, start_date='2017-01-01', end_date='2019-05-01', adjust_type='none')
    if price_df is None:
        continue
    
    # 昨收盘价
    price_df['close_yest'] = price_df['close'].shift(1).fillna(method='bfill')
    # 今日是否跌停
    price_df['down_limit'] = price_df.apply(
        lambda x: x['close'] / x['close_yest'] < 0.91 and x['high'] == x['low'] == x['close'], axis=1)
    # 是否满足连续2日跌停
    price_df['down_limit2'] = price_df['down_limit'].rolling(window=2).apply(lambda x: x[0] and x[1])
    # 今天是否买了
    # 1,昨天满足down_limit2=True
    # 2,今天Open>yest_close*0.91(说明开盘就打开),成交价=开盘价+0.03
    # 3,今天open<yest_close*0.91 且 high!=low 说明开盘跌停,但后续打开,成交价=跌停价+0.01=开盘价+0.03
    price_df['down_limit2_yest'] = price_df['down_limit2'].shift(1).fillna(method='bfill')
    # 是否今天是否买了
    # 1,今天没有跌停,
    # 2,昨天满足down_limit2=True
    price_df['buy_today'] = price_df.apply(
        lambda x: not (x['high'] == x['low'] == x['close']) and x['down_limit2_yest'], axis=1)

    # 明日开盘价
    price_df['open_tow'] = price_df['open'].shift(-1).fillna(method='ffill')
    # (假设,未考虑购买信号)买入后等收益情况(涨跌率,未100%处理)
    price_df['profit'] = price_df.apply(lambda x: (x['open_tow'] - (x['close'] + 0.003)) / x['close'], axis=1)
    # 结合购买信号的收益
    price_df['buy_profit'] = (price_df['buy_today'].astype(int)) * price_df['profit']
    buy_profit_df[stock] = price_df['buy_profit']
    

    #       T-2     T-1     T   T+1
    # 连续2日           Y
    # 今日可买                Y
    # 获得收益                     T日成交价-T+1开盘

import numpy as np
buy_profit_df_tmp=buy_profit_df.replace(0.0,np.NaN).dropna(how='all')
buy_profit_df_tmp.stack()
buy_profit_df_tmp.sum().sum()

最终结果:-15.109610132598789

也就是1510%的负收益

全市场20170101-20190501,连续跌停2日(or以上),开板买入,次日早上卖出的收益

如果不考虑次日开盘就打开跌停,只考虑开盘跌停价,盘中打开的方式收益为负1200%

如果只考虑HS300,则收益分别为

-0.37874840701865414

-0.30521079921429306(仅考虑盘中打开跌停)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值