在金融数据分析领域,上市公司的季度利润数据是衡量企业经营状况的核心指标之一。对于投资者、分析师和量化交易团队来说,能够快速获取准确的历史季度利润数据,往往意味着在基本面分析中占据先机。这个API项目正是为了解决这个痛点而生——它提供了近一年各季度的标准化利润数据接口,让开发者可以摆脱繁琐的财报PDF解析工作。
我曾在某私募基金负责数据平台搭建,当时为了获取这些数据,团队不得不雇佣实习生手动从财报中摘录数据。这种方式不仅效率低下,还容易出错。后来我们转向商业数据供应商,但每年动辄数十万的费用对中小机构并不友好。这个开源API的出现,某种程度上填补了个人开发者和中小机构的数据获取缺口。
目前市面上主要有三类数据获取渠道:
经过实测对比,本API采用了混合方案:
重要提示:采集上市公司数据需遵守《证券法》关于数据使用的规定,本API所有数据均为公开信息二次加工,不包含未公开内容。
原始数据需要经过标准化处理才能保证一致性:
python复制def clean_profit_data(raw_data):
# 处理单位统一(万元/亿元转换)
if '亿' in raw_data['unit']:
raw_data['value'] = float(raw_data['value']) * 10000
# 处理审计调整标记(带*号的数据)
if '*' in raw_data['value']:
raw_data['is_audited'] = False
raw_data['value'] = raw_data['value'].replace('*','')
# 四舍五入保留2位小数
return round(float(raw_data['value']), 2)
采用RESTful风格设计,核心端点包括:
/api/v1/stock/{code}/quarterly 获取单支股票数据/api/v1/stocks/batch 批量查询接口响应示例:
json复制{
"code": "600519",
"name": "贵州茅台",
"quarters": [
{
"quarter": "2023Q4",
"revenue": 1476.94,
"net_profit": 735.08,
"yoy_growth": 19.16%,
"audit_status": "已审计"
},
// 其他季度数据...
]
}
采用增量更新策略降低服务器负载:
更新时序控制:
mermaid复制graph TD
A[交易日15:00] --> B(启动爬虫任务)
B --> C{发现新财报?}
C -->|是| D[下载并解析]
C -->|否| E[结束]
D --> F[数据清洗]
F --> G[入库]
针对高频查询场景做了三级缓存:
实测QPS对比:
| 方案 | 平均响应时间 | 峰值承载 |
|---|---|---|
| 无缓存 | 320ms | 500QPS |
| 二级缓存 | 45ms | 3000QPS |
| 三级缓存 | 28ms | 8000QPS |
为确保数据准确性,实现了三重校验:
通过API快速生成企业盈利分析看板:
python复制import matplotlib.pyplot as plt
def plot_profit_trend(stock_code):
data = get_quarterly_data(stock_code)
quarters = [q['quarter'] for q in data]
profits = [q['net_profit'] for q in data]
plt.figure(figsize=(10,6))
plt.bar(quarters, profits)
plt.title(f"{data[0]['name']}净利润趋势")
plt.ylabel("净利润(亿元)")
plt.grid(axis='y')
plt.show()
用于构建财务因子:
python复制def calculate_profit_factor(stock_list):
factors = {}
for code in stock_list:
data = get_quarterly_data(code)
# 计算季度利润标准差(衡量业绩波动性)
profits = [q['net_profit'] for q in data]
factors[code] = np.std(profits) / np.mean(profits)
return factors
设置关键指标阈值监控:
sql复制-- 在数据仓库中创建预警规则
CREATE MATERIALIZED VIEW profit_alert AS
SELECT
code,
name,
last_quarter,
net_profit,
LAG(net_profit,1) OVER (PARTITION BY code ORDER BY quarter) prev_profit
FROM quarterly_data
WHERE
net_profit < 0 OR -- 亏损预警
(prev_profit IS NOT NULL AND
ABS(net_profit - prev_profit)/prev_profit > 0.3) -- 环比波动超30%
现象:财报已发布但API未更新
/admin/refresh/{code}案例:同一季度不同来源数据差异
免费版限制:
建议优化方案:
对于想要深度使用的开发者,可以考虑:
我在实际使用中发现,将季度数据与每日行情数据关联分析,能有效识别"财报超预期"带来的交易机会。例如设置这样的预警规则:当季度利润增长率超过分析师一致预期5个百分点,且股价尚未明显反应时,触发进一步分析。