2024山东大学创新项目实训_18

将获取的数据进行处理

1. 从SEC(美国证券交易委员会)网站获取公司最新的10-K报告的链接。

  • address_json 是一个字符串,表示JSON文件的路径,该文件用于缓存最新的10-K报告的链接。
  • 判断address_json文件是否存在。如果不存在,则进行以下操作以获取最新的10-K报告链接。

  • 构建API端点

    endpoint 是SEC API的URL,包括API密钥(sec_api_key)。

  • 构建查询语句query 是一个字典,用于指定查询条件。查询内容包括:

    • ticker: 股票代码(self.ticker_symbol)。
    • formType: 10-K表格。
    • fromsize: 只获取最新的一个报告。
    • sort: 按照文件提交时间降序排序,获取最新的报告。
  • 发送请求

    使用requests.post方法向SEC API发送请求,并传递query作为JSON数据。

  • 处理响应

    • 如果响应状态码是200(表示请求成功),则解析响应JSON中的filings字段。
    • 如果filings存在且不为空,获取最新的10-K报告的URL,并打印出来。
    • 如果filings为空,打印没有找到10-K报告的信息。
    • 如果响应状态码不是200,打印请求失败的信息。
  • 缓存结果

    将最新的10-K报告链接保存到address_json文件中,以便下次使用时直接读取缓存文件。

  • 读取缓存文件:如果缓存文件存在,直接读取文件内容,加载为latest_10k_url

  • 返回报告链接:返回最新的10-K报告链接。

 2. 提取并返回股票的关键财务数据,包括最新收盘价、平均日交易量等。

  • 获取历史市场数据

  • 获取其他相关信息

    • info:获取股票的基本信息(例如市值、货币类型、52周价格区间等)。
    • close_price:获取历史数据中最新一天的收盘价。
  • 计算平均日交易量

    计算过去6个月的平均日交易量,即历史数据中每日交易量的平均值。

  • 构建结果字典

    • 构建一个字典 result,包含以下关键财务数据:
      • 6m avg daily val ({info['currency']}mn):过去6个月的平均日交易量(单位:百万)。
      • Closing Price ({info['currency']}):最新的收盘价。
      • Market Cap ({info['currency']}mn):市值(单位:百万)。
      • 52 Week Price Range ({info['currency']}):52周内的价格区间。
      • BVPS ({info['currency']}):每股账面价值(BVPS)。
  • 返回结果:返回包含关键财务数据的字典 result

3.从公司的10-K报告中获取指定章节的内容 

  1. 检查章节参数

    检查传入的 section 参数是否在允许的章节列表中。如果不在列表中,抛出 ValueError

  2. 将章节参数转换为字符串

    section = str(section)

    将章节参数转换为字符串格式,以便后续处理。

  3. 创建存储10-K报告章节的目录

    os.makedirs(f"{self.project_dir}/10k", exist_ok=True)

    创建用于存储10-K报告章节的目录。如果目录已经存在,则不会抛出异常。

  4. 定义报告文件名

    report_name = f"{self.project_dir}/10k/section_{section}.txt"

    定义报告章节文件的路径和名称,使用章节编号或名称作为文件名的一部分。

  5. 检查是否使用缓存

    如果启用了缓存(USE_CACHE)并且报告章节文件存在,则读取文件内容并存储在 section_text 变量中。

  6. 从报告中提取章节内容

    • 如果没有启用缓存或者报告章节文件不存在,则使用 self.extractor.get_section 方法从报告中提取指定章节的内容。
    • 将提取到的内容写入到报告章节文件中,以便下次使用时可以直接从文件中读取。
  7. 返回章节内容

    return section_text

    返回提取到的章节内容。

  • 章节参数检查:确保传入的章节参数是预定义的章节编号或名称,以保证方法的正确性和健壮性。
  • 目录创建:用于存储提取到的章节内容,以便下次可以直接从本地文件中读取,减少不必要的网络请求。
  • 缓存机制:通过检查是否启用缓存和报告章节文件是否存在,决定是否从缓存中读取内容,提高方法的执行效率。
  • 提取章节内容:如果缓存不可用或不存在,通过调用提取器 self.extractor.get_section 获取章节内容,并保存到本地文件中。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值