Пример #1
0
    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)
Пример #2
0
    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')
Пример #3
0
    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)
Пример #4
0
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']
    ]