def __init__(self): self._cfg = Config() self._path = self._cfg.get_value('path', 'path_to_share_folder') + 'indicator/' self._dbmgr = DBMgr(db='indicator') self._cal = Calendar('TW') self._df, ori_column_list, title_list = self._init_result_format() self._cal_related_mom() self._output_excel(self._df, ori_column_list, title_list)
def __init__(self): self._cfg = Config() self._path = self._cfg.get_value('path', 'path_to_portfolio_performance') self._api_server_IP = self._cfg.get_value('IP', 'api_server_IP') self._start_equity = int(self._cfg.get_value('parameter', 'start_equity')) self._start_date = self._cfg.get_value('parameter', 'start_date') self._end_date = self._cfg.get_value('parameter', 'end_date') self._general = General() self._cal = Calendar('TW')
def _run_factor_analysis(self, task_list_detail, factor_list): # 預載交易日&因子資料 cal = Calendar('TW') get_factor_start = time.time() fac = Factor(factor_list) get_factor_end = time.time() print("Get factor time: %f second" % (get_factor_end - get_factor_start)) for task_detail in task_list_detail: try: start = time.time() strategy_config = { 'factor': task_detail['factor'], 'strategy': task_detail['strategy'], 'window': task_detail['window'], 'method': task_detail['method'], 'group': task_detail['group'], 'position': task_detail['position'], } factor_str = self._general.factor_to_string(task_detail['factor']) path = self._cfg.get_value('path', 'path_to_portfolio_performance') + factor_str file_name = "{}_{}_{}_{}_{}_{}".format( factor_str, task_detail['strategy'], task_detail['window'], task_detail['method'], task_detail['group'], task_detail['position'] ) file = pathlib.Path("{}/{}.csv".format(path, file_name)) if file.exists(): self._publish_factor_analysis_task_finish(task_detail['task_status_id'], 1) else: my_stra = MyAsset(strategy_config, cal, fac) end = time.time() print("Execution time: %f second" % (end - start)) # status: 0 - undo, 1 - success, 2 - error self._publish_factor_analysis_task_finish(task_detail['task_status_id'], 1) except Exception as e: # status: 0 - undo, 1 - success, 2 - error self._publish_factor_analysis_task_finish(task_detail['task_status_id'], 2) print(e)
start_equity = 2000000 start_date = '2010-01-01' end_date = '2017-12-31' risk_free_rate = 0.01 print('start_equity: ', start_equity) ticker_list = ['8277'] # ticker_list = ['8277', '3450', '1702', '3306', '3533'] # ticker_list = ['8277', '3450', '1702', '3306', '3533', '2425', '1418', '3324', '2428', '6124'] stk_price_dict = {} ticker_equity_dict = {} backtest_output_dict = {} cal = Calendar('TW') start_date = start_date.split("-") start_date = "".join(start_date) end_date = end_date.split("-") end_date = "".join(end_date) payloads = {'ticker_list': ticker_list, 'date': start_date + "-" + end_date} response = requests.get(server_ip + "stk/get_ticker_period_stk", params=payloads) output_dict = json.loads(response.text)['result'] for ticker in ticker_list: stk_df = pd.DataFrame(output_dict[ticker]) stk_df['date'] = [ datetime.datetime.strptime(elm, "%Y-%m-%d") for elm in stk_df['date'] ]