def get_performance_stats_by_month( entity_type="stock", start_timestamp="2015-01-01", end_timestamp=now_pd_timestamp(), adjust_type: Union[AdjustType, str] = None, data_provider=None, ): ranges = month_start_end_ranges(start_date=start_timestamp, end_date=end_timestamp) month_stats = {} for month_range in ranges: start_timestamp = month_range[0] end_timestamp = month_range[1] logger.info(f"calculate range [{start_timestamp}, {end_timestamp}]") stats = get_performance_stats( entity_type=entity_type, start_timestamp=start_timestamp, end_timestamp=end_timestamp, adjust_type=adjust_type, data_provider=data_provider, ) if stats: month_stats[f"{to_time_str(start_timestamp)}"] = stats return pd.DataFrame.from_dict(data=month_stats, orient="index")
def test_month_start_end_range(): start = "2020-01-01" end = "2021-01-01" ranges = month_start_end_ranges(start_date=start, end_date=end) print(ranges) assert is_same_date(ranges[0][0], "2020-01-01") assert is_same_date(ranges[0][1], "2020-01-31") assert is_same_date(ranges[-1][0], "2020-12-01") assert is_same_date(ranges[-1][1], "2020-12-31") start = "2020-01-01" end = "2021-01-31" ranges = month_start_end_ranges(start_date=start, end_date=end) print(ranges) assert is_same_date(ranges[0][0], "2020-01-01") assert is_same_date(ranges[0][1], "2020-01-31") assert is_same_date(ranges[-1][0], "2021-01-01") assert is_same_date(ranges[-1][1], "2021-01-31")
def test_month_start_end_range(): start = '2020-01-01' end = '2021-01-01' ranges = month_start_end_ranges(start_date=start, end_date=end) print(ranges) assert is_same_date(ranges[0][0], '2020-01-01') assert is_same_date(ranges[0][1], '2020-01-31') assert is_same_date(ranges[-1][0], '2020-12-01') assert is_same_date(ranges[-1][1], '2020-12-31') start = '2020-01-01' end = '2021-01-31' ranges = month_start_end_ranges(start_date=start, end_date=end) print(ranges) assert is_same_date(ranges[0][0], '2020-01-01') assert is_same_date(ranges[0][1], '2020-01-31') assert is_same_date(ranges[-1][0], '2021-01-01') assert is_same_date(ranges[-1][1], '2021-01-31')
def got_top_performance_by_month(entity_type='stock', start_timestamp='2015-01-01', end_timestamp=now_pd_timestamp(), list_days=None): ranges = month_start_end_ranges(start_date=start_timestamp, end_date=end_timestamp) for month_range in ranges: start_timestamp = month_range[0] end_timestamp = month_range[1] top, _ = get_top_performance_entities(entity_type=entity_type, start_timestamp=start_timestamp, end_timestamp=end_timestamp, list_days=list_days) yield (end_timestamp, top)
def get_top_performance_by_month( entity_type="stock", start_timestamp="2015-01-01", end_timestamp=now_pd_timestamp(), list_days=None, data_provider=None, ): ranges = month_start_end_ranges(start_date=start_timestamp, end_date=end_timestamp) for month_range in ranges: start_timestamp = month_range[0] end_timestamp = month_range[1] top, _ = get_top_performance_entities( entity_type=entity_type, start_timestamp=start_timestamp, end_timestamp=end_timestamp, list_days=list_days, data_provider=data_provider, ) yield start_timestamp, end_timestamp, top