def run(): mongodb_fi = Utils.get_conn_fi() date_str = '20190608' file = data_path + '/stock_basic/all_stock_list_' + date_str + '.csv' count = 0 with open(file, newline='', encoding='UTF-8') as cf: reader = csv.DictReader(cf) for row in reader: count += 1 try: transfer_to_mongodb(row, mongodb_fi) print(str(count)+'\t', row['ts_code'], row['fullname'], '\t\t\t\t\t\t成功') except Exception as e: print(e) print(str(count)+'\t', row['ts_code'], '\t\t失败') with open(data_path + '/err_log/err_income_' + date_str + '.log', 'a') as f: f.write(row['ts_code']+'\n')
def calculate(ts_code): fina_indicators = copy.deepcopy(fina_indicators_dict) mongodb_fi = Utils.get_conn_fi() stock_info = mongodb_fi.find_one({'_id': ts_code}) financial_statements = stock_info['financial_statements'] stock_basic = stock_info['stock_basic'] for end_date, data in financial_statements.items(): if not data['balance_sheet'] or not data['income'] or not data[ 'cash_flow'] or not data['fifi']: continue # 资产负债表 # 资产负债比率(占总资产%) # 现金与约当现金比率 cash_to_total_assets_rate = calculate_cash_to_total_assets_rate( data['balance_sheet']) fina_indicators['现金与约当现金比率'][end_date] = Utils.get_rate( cash_to_total_assets_rate) # 应收账款比率 accounts_receivable_rate = calculate_accounts_receivable_rate( data['balance_sheet']) fina_indicators['应收账款比率'][end_date] = Utils.get_rate( accounts_receivable_rate) # 存货比率 inventory_rate = calculate_inventory_rate(data['balance_sheet']) fina_indicators['存货比率'][end_date] = Utils.get_rate(inventory_rate) # 流动资产比率 liquidity_rate = calculate_liquidity_rate(data['balance_sheet']) fina_indicators['流动资产比率'][end_date] = Utils.get_rate(liquidity_rate) # 应付账款比率 total_accounts_payable_rate = calculate_accounts_payable_rate( data['balance_sheet']) fina_indicators['应付账款比率'][end_date] = Utils.get_rate( total_accounts_payable_rate) # 流动负债比率 total_current_liability_rate = calculate_current_liability_rate( data['balance_sheet']) fina_indicators['流动负债比率'][end_date] = Utils.get_rate( total_current_liability_rate) # 长期负债比率 total_long_term_debt_rate = calculate_long_term_debt_rate( data['balance_sheet']) fina_indicators['长期负债比率'][end_date] = Utils.get_rate( total_long_term_debt_rate) # 股东权益比率 total_shareholder_equity_rate = calculate_shareholder_equity_rate( data['balance_sheet']) fina_indicators['股东权益比率'][end_date] = Utils.get_rate( total_shareholder_equity_rate) # 五大财务比率 # 五大财务比率--财务结构 # 负债占资产比率 total_debt_to_asset_rate = calculate_debt_to_asset_rate( data['balance_sheet']) fina_indicators['负债占资产比率'][end_date] = Utils.get_rate( total_debt_to_asset_rate) # 长期资金占不动产/厂房及设备比率 = 长期资金占投资比率 long_term_capital_to_invest_rate = calculate_long_term_capital_to_invest_rate( data['balance_sheet']) fina_indicators['长期资金占投资比率'][end_date] = Utils.get_rate( long_term_capital_to_invest_rate) # 五大财务比率--偿债能力 # 流动比率 liquidity_asset_to_liquidity_debt_rate = calculate_liquidity_asset_to_liquidity_debt_rate( data['balance_sheet']) fina_indicators['流动比率'][end_date] = Utils.get_rate( liquidity_asset_to_liquidity_debt_rate) # 速动比率 quick_moving_rate = calculate_quick_moving_rate(data['balance_sheet']) fina_indicators['速动比率'][end_date] = Utils.get_rate(quick_moving_rate) # 五大财务比率--经营能力 # 应收账款周转率(次) receivable_turnover_rate = calculate_receivable_turnover_rate( data['balance_sheet'], data['income']) fina_indicators['应收账款周转率(次)'][end_date] = Utils.get_rate( receivable_turnover_rate) # 平均收现日数 ave_receive_days = calculate_ave_receivable_days( data['balance_sheet'], data['income']) fina_indicators['平均收现日数'][end_date] = Utils.get_rate(ave_receive_days) # 存货周转率(次) inventory_turnover = calculate_inventory_turnover( data['balance_sheet'], data['income']) fina_indicators['存货周转率(次)'][end_date] = Utils.get_rate( inventory_turnover) # 平均销货日数(平均在库天数) ave_sale_days = calculate_ave_sale_days(data['balance_sheet'], data['income']) fina_indicators['平均销货日数(平均在库天数)'][end_date] = Utils.get_rate( ave_sale_days) # 固定资产周转率 fixed_invest_turnover_rate = calculate_fixed_invest_turnover_rate( data['fifi']) fina_indicators['固定资产周转率'][end_date] = Utils.get_round( fixed_invest_turnover_rate) # 总资产周转率(次) total_assert_turnover_rate = calculate_total_assert_turnover_rate( data['fifi']) fina_indicators['总资产周转率'][end_date] = Utils.get_round( total_assert_turnover_rate) # 五大财务比率--获利能力 # 净资产收益率RoE roe = calculate_roe(data['fifi']) fina_indicators['净资产收益率RoE'][end_date] = Utils.get_round(roe) # 总资产报酬率RoA roa = calculate_roa(data['fifi']) fina_indicators['总资产报酬率RoA'][end_date] = Utils.get_round(roa) # 销售毛利率 roe = calculate_operating_margin(data['fifi']) fina_indicators['销售毛利率'][end_date] = Utils.get_round(roe) # 销售净利率 roa = calculate_business_interest_rate(data['fifi']) fina_indicators['销售净利率'][end_date] = Utils.get_round(roa) # 净利率=纯益率 net_interest_rate = calculate_net_interest_rate(data['income']) fina_indicators['净利率'][end_date] = Utils.get_rate(net_interest_rate) # 基本每股收益=每股盈余(元) surplus_rese_ps = calculate_eps(data['fifi']) fina_indicators['基本每股收益'][end_date] = Utils.get_round(surplus_rese_ps) # 税后净利(百万元) n_income = calculate_n_income(data['income']) fina_indicators['税后净利(百万元)'][end_date] = Utils.get_round(n_income) # 五大财务比率--现金流量 # 现金流量比率 cash_flow_rate = calculate_cash_flow_rate(data['balance_sheet'], data['cash_flow']) fina_indicators['现金流量比率'][end_date] = Utils.get_rate(cash_flow_rate) # 营业活动现金流量(百万元) cash_flow = calculate_cash_flow(data['cash_flow']) fina_indicators['营业活动现金流量(百万元)'][end_date] = Utils.get_round(cash_flow) # 投资活动现金流量(百万元) invest_cash_flow = calculate_invest_cash_flow(data['cash_flow']) fina_indicators['投资活动现金流量(百万元)'][end_date] = Utils.get_round( invest_cash_flow) # 筹资活动现金流量(百万元) finance_cash_flow = calculate_finance_cash_flow(data['cash_flow']) fina_indicators['筹资活动现金流量(百万元)'][end_date] = Utils.get_round( finance_cash_flow) return get_html_table_code(fina_indicators, stock_basic)