Updates
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| ##################################################### | ##################################################### | ||||||
| # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2021.02 # | # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2021.02 # | ||||||
| ##################################################### | ##################################################### | ||||||
| # python exps/trading/organize_results.py | # python exps/trading/organize_results.py           # | ||||||
| ##################################################### | ##################################################### | ||||||
| import sys, argparse | import sys, argparse | ||||||
| import numpy as np | import numpy as np | ||||||
| @@ -52,7 +52,7 @@ class QResult: | |||||||
|             new_dict[xkey] = values |             new_dict[xkey] = values | ||||||
|         return new_dict |         return new_dict | ||||||
|  |  | ||||||
|     def info(self, keys: List[Text], separate: Text = "", space: int = 25, verbose: bool = True): |     def info(self, keys: List[Text], separate: Text = "& ", space: int = 25, verbose: bool = True): | ||||||
|         avaliable_keys = [] |         avaliable_keys = [] | ||||||
|         for key in keys: |         for key in keys: | ||||||
|             if key not in self.result: |             if key not in self.result: | ||||||
| @@ -62,10 +62,12 @@ class QResult: | |||||||
|         head_str = separate.join([self.full_str(x, space) for x in avaliable_keys]) |         head_str = separate.join([self.full_str(x, space) for x in avaliable_keys]) | ||||||
|         values = [] |         values = [] | ||||||
|         for key in avaliable_keys: |         for key in avaliable_keys: | ||||||
|             current_values = self._result[key] |             # current_values = self._result[key] | ||||||
|  |             current_values = [x * 100 for x in self._result[key]] | ||||||
|             mean = np.mean(current_values) |             mean = np.mean(current_values) | ||||||
|             std = np.std(current_values) |             std = np.std(current_values) | ||||||
|             values.append("{:.4f} $\pm$ {:.4f}".format(mean, std)) |             # values.append("{:.4f} $\pm$ {:.4f}".format(mean, std)) | ||||||
|  |             values.append("{:.2f} $\pm$ {:.2f}".format(mean, std)) | ||||||
|         value_str = separate.join([self.full_str(x, space) for x in values]) |         value_str = separate.join([self.full_str(x, space) for x in values]) | ||||||
|         if verbose: |         if verbose: | ||||||
|             print(head_str) |             print(head_str) | ||||||
| @@ -114,7 +116,7 @@ def query_info(save_dir, verbose): | |||||||
|         "Rank IC": "Rank_IC", |         "Rank IC": "Rank_IC", | ||||||
|         "Rank ICIR": "Rank_ICIR", |         "Rank ICIR": "Rank_ICIR", | ||||||
|         "excess_return_with_cost.annualized_return": "Annualized_Return", |         "excess_return_with_cost.annualized_return": "Annualized_Return", | ||||||
|         "excess_return_with_cost.information_ratio": "Information_Ratio", |         # "excess_return_with_cost.information_ratio": "Information_Ratio", | ||||||
|         "excess_return_with_cost.max_drawdown": "Max_Drawdown", |         "excess_return_with_cost.max_drawdown": "Max_Drawdown", | ||||||
|     } |     } | ||||||
|     all_keys = list(key_map.values()) |     all_keys = list(key_map.values()) | ||||||
| @@ -162,7 +164,7 @@ if __name__ == "__main__": | |||||||
|     parser.add_argument( |     parser.add_argument( | ||||||
|         "--save_dir", type=str, nargs="+", default=["./outputs/qlib-baselines"], help="The checkpoint directory." |         "--save_dir", type=str, nargs="+", default=["./outputs/qlib-baselines"], help="The checkpoint directory." | ||||||
|     ) |     ) | ||||||
|     parser.add_argument("--verbose", type=str2bool, default=False, help="Print detailed log information or not") |     parser.add_argument("--verbose", type=str2bool, default=False, help="Print detailed log information or not.") | ||||||
|     args = parser.parse_args() |     args = parser.parse_args() | ||||||
|  |  | ||||||
|     print("Show results of {:}".format(args.save_dir)) |     print("Show results of {:}".format(args.save_dir)) | ||||||
| @@ -176,3 +178,4 @@ if __name__ == "__main__": | |||||||
|         all_info_dict.append(info_dict) |         all_info_dict.append(info_dict) | ||||||
|     info_dict = QResult.merge_dict(all_info_dict) |     info_dict = QResult.merge_dict(all_info_dict) | ||||||
|     compare_results(info_dict["heads"], info_dict["values"], info_dict["names"], space=15, verbose=True, sort_key=True) |     compare_results(info_dict["heads"], info_dict["values"], info_dict["names"], space=15, verbose=True, sort_key=True) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user