feat: add select_condition_stocks_rank

main
jackluson 3 years ago
parent f48afbb329
commit de0be6a692

@ -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.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 from utils.file_op import read_dir_all_file
def get_fund_code_pool(): def get_fund_code_pool(condition_dict):
# fund_code_pool = ['000001', '160133', '360014', '420002', each_statistic = FundStatistic()
# '420102', '000409', '000418', '000746',
# '000751', '000884', '000991', '001043',
# '001054', '001104', '001410', '001473',
# '519714', '000003', '000011', '000029']
morning_star_rating_5_condition = { morning_star_rating_5_condition = {
'value': 4, 'value': 4,
'operator': '>=' 'operator': '>='
@ -33,19 +29,15 @@ def get_fund_code_pool():
'value': 5, 'value': 5,
'operator': '=' '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) # 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( fund_code_pool = each_statistic.select_fund_pool(
**condition_dict, **condition_dict,
) )
return fund_code_pool 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: if quarter_index == None:
@ -104,6 +96,41 @@ def stocks_compare(stock_list, *, market=None, quarter_index=None, fund_code_poo
return filter_list 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): def t100_stocks_rank(each_statistic=None, *, quarter_index=None):
# T100权重股排名 # T100权重股排名
if each_statistic == None: 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' output_file = './outcome/数据整理/strategy/top100_rank.xlsx'
sheet_name = quarter_index + '基金重仓股T100' sheet_name = quarter_index + '基金重仓股T100'
columns = ['代码','名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '持有数量环比', '持有数量环比百分比', '持有数量升或降', quarter_index + '持有市值(亿元)', last_quarter_index + '持有市值(亿元)', '持有市值环比', '持有市值环比百分比', '持有市值升或降'] columns = ['代码','名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '持有数量环比', '持有数量环比百分比', '持有数量升或降', quarter_index + '持有市值(亿元)', last_quarter_index + '持有市值(亿元)', '持有市值环比', '持有市值环比百分比', '持有市值升或降']
stock_top_list = each_statistic.all_stock_fund_count( stock_top_list = each_statistic.all_stock_fund_count(
quarter_index=quarter_index, quarter_index=quarter_index,
filter_count=80) 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): def all_stock_holder_detail(each_statistic=None, *, quarter_index=None, threshold=0):
""" 所有股票的基金持仓细节 """ 所有股票的基金持仓细节
Args: Args:
each_statistic (class): 统计类 each_statistic (class): 统计类
quarter_index (str, optional): 季度字符串. Defaults to None. 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) df_quarter_list = pd.DataFrame(quarter_list, columns=columns)
update_xlsx_file(path, df_quarter_list, sum_column_name) update_xlsx_file(path, df_quarter_list, sum_column_name)
if __name__ == '__main__': if __name__ == '__main__':
each_statistic = FundStatistic()
# quarter_index = "2021-Q2"
# read_excel(path, 'A股', '601888', '2021-Q1持有市值亿元')
# 所有股票的基金持仓细节 # 所有股票的基金持仓细节
# all_stock_holder_detail(each_statistic) # all_stock_holder_detail(each_statistic)
@ -354,4 +376,5 @@ if __name__ == '__main__':
# 获取某些基金的十大持仓股票信息 # 获取某些基金的十大持仓股票信息
# get_special_fund_code_holder_stock_detail(each_statistic) # get_special_fund_code_holder_stock_detail(each_statistic)
calculate_quarter_fund_count() # calculate_quarter_fund_count()
select_condition_stocks_rank()

Loading…
Cancel
Save