diff --git a/src/fund_statistic.py b/src/fund_statistic.py index 7adcfd9..cecd7b6 100644 --- a/src/fund_statistic.py +++ b/src/fund_statistic.py @@ -19,12 +19,8 @@ from fund_info.statistic import FundStatistic from utils.index import get_last_quarter_str, get_stock_market, find_from_list_of_dict, update_xlsx_file from utils.file_op import read_dir_all_file -def get_fund_code_pool(): - # fund_code_pool = ['000001', '160133', '360014', '420002', - # '420102', '000409', '000418', '000746', - # '000751', '000884', '000991', '001043', - # '001054', '001104', '001410', '001473', - # '519714', '000003', '000011', '000029'] +def get_fund_code_pool(condition_dict): + each_statistic = FundStatistic() morning_star_rating_5_condition = { 'value': 4, 'operator': '>=' @@ -33,19 +29,15 @@ def get_fund_code_pool(): 'value': 5, 'operator': '=' } - last_year_time = time.localtime(time.time() - 365 * 24 * 3600) + # last_year_time = time.localtime(time.time() - 365 * 24 * 3600) # last_year_date = time.strftime('%Y-%m-%d', last_year_time) - condition_dict = { - 'morning_star_rating_5': morning_star_rating_5_condition, - 'morning_star_rating_3': morning_star_rating_3_condition, - } fund_code_pool = each_statistic.select_fund_pool( **condition_dict, ) return fund_code_pool -def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_pool=None, is_A_stock=None): +def stocks_compare(stock_list, *, market=None, quarter_index=None, is_A_stock=None): """与某个季度数据进行比较 """ if quarter_index == None: @@ -104,6 +96,41 @@ def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_poo return filter_list +def select_condition_stocks_rank(each_statistic=None, *, quarter_index=None): + if each_statistic == None: + each_statistic = FundStatistic() + if quarter_index == None: + quarter_index = get_last_quarter_str(1) + columns = ['代码','名称', '持有数量(只)', '持有市值(亿元)'] + company = '广发基金管理有限公司' + company_condition = { + 'value': company, + 'operator': '=' + } + output_file = './outcome/数据整理/stocks/condition/'+ company +'.xlsx' + condition_dict = { + # 'morning_star_rating_5': morning_star_rating_5_condition, + # 'morning_star_rating_3': morning_star_rating_3_condition, + 'company': company_condition + } + fund_pool = get_fund_code_pool(condition_dict) + stock_top_list = each_statistic.all_stock_fund_count( + quarter_index=quarter_index, + fund_code_pool=fund_pool, + filter_count=0) + stock_rank_list = [] + for stock_name_code in stock_top_list: + stock_code = stock_name_code[0].split('-', 1)[0] + stock_name = stock_name_code[0].split('-', 1)[1] + stock_count = stock_name_code[1]['count'] + stock_holder_asset = stock_name_code[1]['holder_asset'] + stock_rank_item = [stock_code, stock_name, stock_count, stock_holder_asset] + stock_rank_list.append(stock_rank_item) + df_stock_top_list = pd.DataFrame(stock_rank_list, columns=columns) + print(df_stock_top_list) + + update_xlsx_file(output_file, df_stock_top_list, quarter_index) + def t100_stocks_rank(each_statistic=None, *, quarter_index=None): # T100权重股排名 if each_statistic == None: @@ -114,7 +141,7 @@ def t100_stocks_rank(each_statistic=None, *, quarter_index=None): output_file = './outcome/数据整理/strategy/top100_rank.xlsx' sheet_name = quarter_index + '基金重仓股T100' columns = ['代码','名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '持有数量环比', '持有数量环比百分比', '持有数量升或降', quarter_index + '持有市值(亿元)', last_quarter_index + '持有市值(亿元)', '持有市值环比', '持有市值环比百分比', '持有市值升或降'] - + stock_top_list = each_statistic.all_stock_fund_count( quarter_index=quarter_index, filter_count=80) @@ -195,7 +222,6 @@ def all_stocks_rank(each_statistic=None): def all_stock_holder_detail(each_statistic=None, *, quarter_index=None, threshold=0): """ 所有股票的基金持仓细节 - Args: each_statistic (class): 统计类 quarter_index (str, optional): 季度字符串. Defaults to None. @@ -338,10 +364,6 @@ def calculate_quarter_fund_count(): df_quarter_list = pd.DataFrame(quarter_list, columns=columns) update_xlsx_file(path, df_quarter_list, sum_column_name) if __name__ == '__main__': - each_statistic = FundStatistic() - # quarter_index = "2021-Q2" - # read_excel(path, 'A股', '601888', '2021-Q1持有市值(亿元)') - # 所有股票的基金持仓细节 # all_stock_holder_detail(each_statistic) @@ -354,4 +376,5 @@ if __name__ == '__main__': # 获取某些基金的十大持仓股票信息 # get_special_fund_code_holder_stock_detail(each_statistic) - calculate_quarter_fund_count() + # calculate_quarter_fund_count() + select_condition_stocks_rank()