def METHOD_NAME(self):
    filters = self.filters
    recipient_hash = self.filters["recipient_id"][:-2]
    if self.filters["recipient_id"][-1] == "P":
        # there *should* only one record with that hash and recipient_level = 'P'
        parent_uei_rows = RecipientProfile.objects.filter(
            recipient_hash=recipient_hash, recipient_level="P"
        ).values("uei")
        if len(parent_uei_rows) != 1:
            raise InvalidParameterException("Provided recipient_id has no parent records")
        parent_uei = parent_uei_rows[0]["uei"]
        # This is for two reasons - we don't store the `parent_recipient_hash` for awards,
        # and the original postgres version of the code also searched by parent_uei instead of the parent hash
        filters.pop("recipient_id")
        filter_query = QueryWithFilters.generate_awards_elasticsearch_query(filters)
        filter_query.must.insert(0, Q("match", parent_uei=parent_uei))
    else:
        filter_query = QueryWithFilters.generate_awards_elasticsearch_query(filters)
    # This has to be hard coded in since QueryWithFilters automatically uses "action_date" for awards
    for i in range(len(self.filters["time_period"])):
        filter_query.must[1].should[i].should[0] = Q(
            "range", **{"date_signed": {"gte": filters["time_period"][i]["start_date"]}}
        )
    search = AwardSearch().filter(filter_query)
    if self.group == "month":
        time_period_field = "month"
    elif self.group == "quarter":
        time_period_field = "quarter"
    elif self.group == "fiscal_year":
        time_period_field = "year"
    group_by_time = A("date_histogram", field="date_signed", interval=time_period_field)
    search.aggs.bucket("time_period", group_by_time).metric("award_count", create_count_aggregation("award_id"))
    search.update_from_dict({"size": 0})
    response = search.handle_execute()
    return response