Files
server-configs/check_lof_akshare.py
2026-02-13 22:24:27 +08:00

63 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python3
"""
LOF基金溢价检查 (使用 akshare)
"""
import akshare as ak
import pandas as pd
from datetime import datetime
def clean_number(x):
try:
if pd.isna(x) or x == '-':
return None
return float(str(x).replace('%', '').replace('+', ''))
except:
return None
def get_lof_report():
"""生成LOF基金溢价报告"""
df = ak.qdii_e_index_jsl()
df['premium'] = df['T-1溢价率'].apply(clean_number)
df['price'] = df['现价'].apply(clean_number)
df['change'] = df['涨幅'].apply(clean_number)
df['volume'] = df['成交'].apply(clean_number)
# 过滤有效数据
valid_df = df.dropna(subset=['premium', 'volume'])
# 高溢价TOP10
premium_top = valid_df.sort_values('premium', ascending=False).head(10)
# 高成交TOP10
volume_top = valid_df.sort_values('volume', ascending=False).head(10)
report = []
report.append("=" * 70)
report.append("📊 LOF/QDII基金溢价排行 TOP 10")
report.append("=" * 70)
report.append(f"\n数据时间: {datetime.now().strftime('%Y-%m-%d %H:%M')}\n")
report.append(f"{'代码':<10} {'名称':<16} {'溢价率':>10} {'现价':>8} {'涨幅':>8}")
report.append("-" * 55)
for _, row in premium_top.iterrows():
code = str(row['代码'])
name = str(row['名称'])[:14]
premium = row['premium']
price = row['price']
change = row['change']
report.append(f"{code:<10} {name:<16} {premium:>+9.2f}% {price:>7.3f} {change:>+7.2f}%")
report.append("\n" + "=" * 70)
report.append("💡 套利提示:")
report.append(" 溢价 > 2%: 可考虑申购→卖出")
report.append(" 成交量 > 1000万/日 流动性较好")
report.append("=" * 70)
return "\n".join(report)
if __name__ == "__main__":
print(get_lof_report())