because you have ->get() on your query.
paginate is not really a filter since it is a terminating statement, ie, when eloquent sees that statement it runs the query. You will need to handle it outside of the filters.
One approach might be to always paginate (with a very large value) and then have it overridden by the query string
public function index(FundFilters $filters)
{
return FundResource::collection(Fund::filter($filters))
->paginate(request()->input('perPage',99999));
}
where 99999 is the default value, or is overwritten by perPage=10 for instance in the querystring (adapt to your paginate count parameter)