Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

增加每日涨跌停价格 #11

Open
chenditc opened this issue May 20, 2023 · 2 comments
Open

增加每日涨跌停价格 #11

chenditc opened this issue May 20, 2023 · 2 comments

Comments

@chenditc
Copy link
Owner

https://tushare.pro/document/2?doc_id=183

便于回测时更精确地判断是否达到涨跌停

@chenditc
Copy link
Owner Author

chenditc commented Jun 4, 2023

Tushare 的涨跌停价格只有 2007 年开始的数据。暂定逻辑:

  1. 持续更新数据可以从 Tushare 中获取。
  2. 历史数据来源1 Tushare
  3. 历史数据来源2,Baostock 获取 ST 股票,将对应股票设置为涨跌停价格 = 前一日收盘价的 +- 5%.
    • 从 final_a_stock_eod_price 中把 tradedate, symbol 加入 final_a_stock_limit,补全股票池
    • 从 final_a_stock_eod_price 中通过 lag() 函数补充 preclose 价格
    • 从 baostock 中提取 preclose 价格与 final_a_stock_limit 不同,且 final_a_stock_limit 的涨停价为空,且 baostock 前一日的 volume 不为空的,设置 preclose 价格。
  4. 通用逻辑,对于 2009年以前的股票,如果没有涨跌停价格的,设置涨停价为前一日收盘价的 +- 10%,如果价格超过该区间的,设置为 null
  5. 删除 1996年12月16日 以前的数据,在 1996年12月16日 之前,A股没有涨跌停限制
  6. 最高价高于涨停价 1% 以内,最低价低于跌停价 1% 以内的,将涨跌停价格设为最高/最低价。大概率是因为部分数据源精度不同导致的,应该不影响最终投资效果。
  7. 最高价高于涨停价1%,最低价低于跌停价1%以上的,说明理论计算的涨跌停价格不适用,例如停牌复牌,删除该数据,表示没有涨跌停。

数据校验:

  1. 最高价 <= 涨停价
  2. 最低价 >= 跌停价
  3. tushare 和 baostock 的 preclose 价格应当相同

@chenditc
Copy link
Owner Author

验证了一下 baostock 的数据集:

  1. 和 tushare 相比,早期的 preclose 数据不准确,因为 preclose 数据是从前一个交易日获取的,但是前一个交易日的数据有错误。
  2. 部分数据例如 tradedate = "2010-02-23" AND symbol = "SH600313",volume = 0, amount =0, turn 为 NULL,close 为 6.97。对照东方财富等数据源,当日收盘价应为 6.99。
  3. baostock 中收盘价数据确实的时间对 ST 股的标记仍然是正确的。

结论:

  1. 可以用 baostock 的 isST 标志,但是要谨慎使用 preclose 数据。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant