Consider using a generator instead 'max(b.max() for b in beta.values())'
808 beta_max = (
809 beta.max()
810 if isinstance(returns, _pd.Series)
811 else max([b.max() for b in beta.values()]) 812 )
813 mmin = min([-100, int(beta_min * 100)])
814 mmax = max([100, int(beta_max * 100)])
Consider using a generator instead 'min(b.min() for b in beta.values())'
803 beta_min = (
804 beta.min()
805 if isinstance(returns, _pd.Series)
806 else min([b.min() for b in beta.values()]) 807 )
808 beta_max = (
809 beta.max()
Description
Using a container in place of a generator for a calls that can accept both, slows down the performance. Consider using generators for all function calls which accept both containers and genertors.
Bad practice
# List comprehension is unnecessary here
set([student.name for student in student])
sum([y**2 for y in list(range(10))])
Recommended
set(student.name for student in students)
sum(y**2 for y in list(range(10)))