@Re-Born
固定finance.FUND_PORTFOLIO_STOCK.symbol == stock
改变finance.FUND_PORTFOLIO_STOCK.report_type_id == q
就可以得到单支股票的基金持仓市值变化
df_cap_stock = finance.run_query(query(
finance.FUND_PORTFOLIO_STOCK.code #基金代码
,finance.FUND_PORTFOLIO_STOCK.period_end #报告期
,finance.FUND_PORTFOLIO_STOCK.pub_date #季报发布日期
,finance.FUND_PORTFOLIO_STOCK.report_type_id #报告类型编码
,finance.FUND_PORTFOLIO_STOCK.report_type #报告类型
,finance.FUND_PORTFOLIO_STOCK.symbol #持仓股票代码
,finance.FUND_PORTFOLIO_STOCK.market_cap #持仓股票的市值
)
.filter(
finance.FUND_PORTFOLIO_STOCK.code.in_(g.top_n_fund), #指定的基金代码
finance.FUND_PORTFOLIO_STOCK.symbol == stock , #指定的持仓股票
finance.FUND_PORTFOLIO_STOCK.period_end == period_end , #报告期
# finance.FUND_PORTFOLIO_STOCK.pub_date< today, #基金季报发布日期
# finance.FUND_PORTFOLIO_STOCK.pub_date>yesmonth, #基金季报发布日期
finance.FUND_PORTFOLIO_STOCK.report_type_id == q #报告类型编码
)
.order_by(finance.FUND_PORTFOLIO_STOCK.market_cap.desc())) #按“持仓股票的市值”降序
# #JoinQuant数据源有重复数据行;(如:2021-1-29:600519持仓基金005330 有2条)
# #去重处理(取最先出现的行;注:此处假定最持仓市值较大者为准,实际上并不精准);
# df_cap_stock = df_cap_stock.drop_duplicates(subset=['code','pub_date','symbol'], keep='first')
#调试信息;
# print('len(df_cap_stock)=',len(df_cap_stock))
# print(df_cap_stock)
#2、按股票汇总(所有基金持仓市值);
grouped_stock = df_cap_stock['market_cap'].groupby(df_cap_stock['symbol']).sum()
2023-04-27