get_fundamentals - 查询财务数据

  • getfundamentals(_query, entry_date=None, interval='1d', report_quarter=False)
  • 获取历史财务数据表格。目前支持中国市场超过400个指标,具体请参考 财务数据文档 。目前仅支持中国市场。需要注意,一次查询过多股票的财务数据会导致系统运行缓慢。

参数:

  • query (SQLAlchemyQueryObject) – SQLAlchmey的Query对象。其中可在’query’内填写需要查询的指标,’filter’内填写数据过滤条件。具体可参考 sqlalchemy’s query documentation 学习使用更多的方便的查询语句。从数据科学家的观点来看,sqlalchemy的使用比sql更加简单和强大
  • entry_date (str | datetime.date | datetime.datetime | pandas.Timestamp) – 查询财务数据的基准日期,应早于策略当前日期。默认为策略当前日期前一天。
  • interval (str) – 查询财务数据的间隔,默认为‘1d’。例如,填写‘5y’,则代表从entry_date开始(包括entry_date)回溯5年,返回数据时间以年为间隔。’d’ - 天,’m’ - 月, ‘q’ - 季,’y’ - 年
  • report_quarter (bool) – 是否显示报告期,默认为False,不显示。’Q1’ - 一季报,’Q2’ - 半年报,’Q3’ - 三季报,’Q4’ - 年报返回:pandas.DataPanel 如果查询结果为空,返回空 pandas.DataFrame 如果给定间隔为1d, 1m, 1q, 1y,返回 pandas.DataFrameExample:

  • 获取财务数据中的pe_ration和revenue指标:

  1. # 并且通过filter过滤掉得到符合一定范围的pe_ration的结果
  2. # 最后只拿到按照降序排序之后的前10个
  3. fundamental_df = get_fundamentals(
  4. query(
  5. fundamentals.income_statement.revenue, fundamentals.eod_derivative_indicator.pe_ratio
  6. ).filter(
  7. fundamentals.eod_derivative_indicator.pe_ratio > 25
  8. ).filter(
  9. fundamentals.eod_derivative_indicator.pe_ratio < 30
  10. ).order_by(
  11. fundamentals.income_statement.revenue.desc()
  12. ).limit(
  13. 10
  14. )
  15. )
  16. context.stocks = fundamental_df.columns.values
  17. update_universe(context.stocks)
  • 获取某些指定股票的财务数据:
  1. def init(context):
  2. context.stocks = industry('A01')
  3. logger.info("industry stocks: " + str(context.stocks))
  4.  
  5. #每个表都有一个stockcode在用来方便通过股票代码来过滤掉查询的数据,比如次数是只查询'A01'板块的revenue 和 pe_ratio
  6. context.fundamental_df = get_fundamentals(
  7. query(
  8. fundamentals.income_statement.revenue, fundamentals.eod_derivative_indicator.pe_ratio
  9. ).filter(
  10. fundamentals.eod_derivative_indicator.pe_ratio > 5
  11. ).filter(
  12. fundamentals.eod_derivative_indicator.pe_ratio < 300
  13. ).filter(
  14. fundamentals.income_statement.stockcode.in_(context.stocks)
  15. )
  16. )
  17. logger.info(context.fundamental_df)
  18. update_universe(context.fundamental_df.columns.values)