def prepare_calculate(self, trade_date): self.trade_date = trade_date tp_price_return, temp_price_sets = self.get_basic_data(trade_date) # tp_price_return.set_index('symbol', inplace=True) # tp_price_return['symbol'] = tp_price_return.index # symbol_sets = list(set(tp_price_return['symbol'])) # tp_price_return_list = pd.DataFrame() # # for symbol in symbol_sets: # if len(tp_price_return[tp_price_return['symbol'] == symbol]) < 3: # continue # tp_price_return_list = tp_price_return_list.append( # tp_price_return.loc[symbol].sort_values(by='trade_date', ascending=True)) if len(tp_price_return) <= 0: print("%s has no data" % trade_date) return else: session = str(int(time.time() * 1000000 + datetime.now().microsecond)) data = { 'total_data': tp_price_return.to_json(orient='records'), 'index_daily_price_sets': temp_price_sets.to_json(orient='records') } cache_data.set_cache(session, 'volatility' + str(trade_date), json.dumps(data)) # cache_data.set_cache(session, 'volatility' + str(trade_date) + '_a', # tp_price_return_list.to_json(orient='records')) # cache_data.set_cache(session, 'volatility' + str(trade_date) + '_b', # temp_price_sets.to_json(orient='records')) factor_volatility_value_task.calculate.delay(factor_name='volatility' + str(trade_date), trade_date=trade_date, session=session)
def remote_run(self, trade_date): total_data = self.loadon_data(trade_date) # 存储数据 session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session, 'factor_earning_expectation', total_data.to_json(orient='records')) distributed_factor.delay(session, trade_date, json.dumps(self._methods), self._name)
def growth_calculate(trade_date): # cash flow ttm_factor_sets, balance_sets = get_basic_growth_data(trade_date) growth_sets = pd.merge(ttm_factor_sets, balance_sets, on='symbol') if len(growth_sets) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date), trade_date, growth_sets.to_json(orient='records')) factor_growth.factor_calculate.delay(date_index=trade_date, session=session) time1 = time.time() print('growth_cal_time:{}'.format(time1 - tic))
def cash_flow_calculate(trade_date): # cash flow tp_cash_flow, ttm_cash_flow_sets = get_basic_cash_flow(trade_date) if len(tp_cash_flow) <= 0 or len(ttm_cash_flow_sets) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date) + "1", trade_date, tp_cash_flow.to_json(orient='records')) cache_data.set_cache(session + str(trade_date) + "2", trade_date, ttm_cash_flow_sets.to_json(orient='records')) factor_cash_flow.factor_calculate.delay(date_index=trade_date, session=session) time4 = time.time() print('cash_flow_cal_time:{}'.format(time4 - tic))
def constrain_calculate(trade_date): # cash flow balance_sets, ttm_factors_sets = get_basic_constrain(trade_date) if len(balance_sets) <= 0 or len(ttm_factors_sets) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date) + '1', trade_date, balance_sets.to_json(orient='records')) cache_data.set_cache(session + str(trade_date) + '2', trade_date, ttm_factors_sets.to_json(orient='records')) factor_constrain.factor_calculate.delay(date_index=trade_date, session=session) time5 = time.time() print('constrain_cal_time:{}'.format(time5 - tic))
def prepaer_calculate(self, trade_date): valuation_sets, ttm_factor_sets, income_sets, balance_set = self.get_basic_data( trade_date) # valuation_sets = pd.merge(valuation_sets, income_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, ttm_factor_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, balance_set, on='symbol') if len(valuation_sets) <= 0: print("%s has no data" % trade_date) return else: session = str( int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session, 'scale' + str(trade_date), valuation_sets.to_json(orient='records')) factor_scale_value_task.calculate.delay(factor_name='scale' + str(trade_date), trade_date=trade_date, session=session)
def historical_value_calculate(trade_date): # history_value valuation_sets, ttm_factor_sets, cash_flow_sets, income_sets = get_basic_history_value_data( trade_date) valuation_sets = pd.merge(valuation_sets, income_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, ttm_factor_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, cash_flow_sets, on='symbol') if len(valuation_sets) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date), trade_date, valuation_sets.to_json(orient='records')) historical_value.factor_calculate.delay(date_index=trade_date, session=session) time2 = time.time() print('history_cal_time:{}'.format(time2 - tic))
def prepare_calculate(trade_date): # per share indicators valuation_sets, ttm_factor_sets, cash_flow_sets, income_sets, balance_sets = get_basic_scale_data( trade_date) valuation_sets = pd.merge(valuation_sets, income_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, ttm_factor_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, cash_flow_sets, on='symbol') valuation_sets = pd.merge(valuation_sets, balance_sets, on='symbol') if len(valuation_sets) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date), trade_date, valuation_sets.to_json(orient='records')) factor_per_share_indicators.factor_calculate.delay( date_index=trade_date, session=session) time3 = time.time() print('per_share_cal_time:{}'.format(time3 - tic))
def earning_calculate(trade_date): # cash flow tp_earning, ttm_earning_5y, ttm_earning = get_basic_earning(trade_date) if len(tp_earning) <= 0 or len(ttm_earning_5y) <= 0 or len( ttm_earning) <= 0: print("%s has no data" % trade_date) return else: tic = time.time() session = str(int(time.time() * 1000000 + datetime.now().microsecond)) cache_data.set_cache(session + str(trade_date) + "1", trade_date, tp_earning.to_json(orient='records')) cache_data.set_cache(session + str(trade_date) + "2", trade_date, ttm_earning_5y.to_json(orient='records')) cache_data.set_cache(session + str(trade_date) + "3", trade_date, ttm_earning.to_json(orient='records')) factor_earning.factor_calculate.delay(date_index=trade_date, session=session) time6 = time.time() print('earning_cal_time:{}'.format(time6 - tic))