将获取的数据进行处理
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表格。from
和size
: 只获取最新的一个报告。sort
: 按照文件提交时间降序排序,获取最新的报告。
-
发送请求:
使用
requests.post
方法向SEC API发送请求,并传递query
作为JSON数据。 -
处理响应:
- 如果响应状态码是200(表示请求成功),则解析响应JSON中的
filings
字段。 - 如果
filings
存在且不为空,获取最新的10-K报告的URL,并打印出来。 - 如果
filings
为空,打印没有找到10-K报告的信息。 - 如果响应状态码不是200,打印请求失败的信息。
- 如果响应状态码是200(表示请求成功),则解析响应JSON中的
-
缓存结果:
将最新的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报告中获取指定章节的内容
-
检查章节参数:
检查传入的
section
参数是否在允许的章节列表中。如果不在列表中,抛出ValueError
。 -
将章节参数转换为字符串:
section = str(section)
将章节参数转换为字符串格式,以便后续处理。
-
创建存储10-K报告章节的目录:
os.makedirs(f"{self.project_dir}/10k", exist_ok=True)
创建用于存储10-K报告章节的目录。如果目录已经存在,则不会抛出异常。
-
定义报告文件名:
report_name = f"{self.project_dir}/10k/section_{section}.txt"
定义报告章节文件的路径和名称,使用章节编号或名称作为文件名的一部分。
-
检查是否使用缓存:
如果启用了缓存(
USE_CACHE
)并且报告章节文件存在,则读取文件内容并存储在section_text
变量中。 -
从报告中提取章节内容:
- 如果没有启用缓存或者报告章节文件不存在,则使用
self.extractor.get_section
方法从报告中提取指定章节的内容。 - 将提取到的内容写入到报告章节文件中,以便下次使用时可以直接从文件中读取。
- 如果没有启用缓存或者报告章节文件不存在,则使用
-
返回章节内容:
return section_text
返回提取到的章节内容。
- 章节参数检查:确保传入的章节参数是预定义的章节编号或名称,以保证方法的正确性和健壮性。
- 目录创建:用于存储提取到的章节内容,以便下次可以直接从本地文件中读取,减少不必要的网络请求。
- 缓存机制:通过检查是否启用缓存和报告章节文件是否存在,决定是否从缓存中读取内容,提高方法的执行效率。
- 提取章节内容:如果缓存不可用或不存在,通过调用提取器
self.extractor.get_section
获取章节内容,并保存到本地文件中。