The _get_stock_stats_bulk() function uses pd.isna() but pandas was not
imported in y_finance.py. It worked by accident because stockstats_utils
was imported first and loaded pandas into the module namespace. This
fragile implicit dependency breaks if import order changes.
Add _clean_dataframe() to normalize stock DataFrames before stockstats:
coerce invalid dates/prices, drop rows missing Close, fill price gaps.
Also add on_bad_lines="skip" to all cached CSV reads.