63 lines
1.9 KiB
Python
Executable File
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())
|