feat(flask): OHLCV 端点自动附加 ETF 净值和溢价率

flask_server.py:
- 当 asset_type 为 china_etf 时,自动调用 fetch_etf_with_nav
- 响应中添加 nav、premium_series、latest_premium、premium_stats

flask_api_source.py:
- 解析 ETF 数据中的净值和溢价率信息
- 将 nav_df、premium_series、premium_stats 存入 DataFrame.attrs
This commit is contained in:
2026-05-14 00:57:37 +08:00
parent d4047d4cf4
commit d62763b0bd
2 changed files with 62 additions and 0 deletions

View File

@@ -142,6 +142,30 @@ class FlaskAPIDataSource:
if 'info' in data:
df.attrs['info'] = data['info']
# ETF 数据自动附加净值和溢价率信息
if data.get('asset_type') == 'china_etf':
# 净值数据
nav_section = data.get('nav', {})
if nav_section.get('data'):
nav_df = pd.DataFrame(nav_section['data'])
if 'date' in nav_df.columns:
nav_df['date'] = pd.to_datetime(nav_df['date'])
nav_df = nav_df.set_index('date')
df.attrs['nav'] = nav_df
# 溢价率序列
if 'premium_series' in data:
df.attrs['premium_series'] = data['premium_series']
# 最新溢价率
if 'latest_premium' in data:
df.attrs['latest_premium'] = data['latest_premium']
df.attrs['premium_date'] = data.get('premium_date')
# 溢价率统计
if 'premium_stats' in data:
df.attrs['premium_stats'] = data['premium_stats']
print(f"{code}: {len(df)} 条数据 ({start_date} ~ {end_date})")
return df