I am not a database guru, but I suspect that this will work better:
First, create a stocks table to hold the id, ticker, and date, if the date is shared.
stocks: id, ticker, date
The idea is to reduce data duplication by factoring out the shared columns. Now the picks_source tables can have those columns removed:
picks_source_1: id, buys, shorts
picks_source_2: id, buys, year_return
picks_source_3: id, month_return, year_return
picks_source_4: id
picks_source_5: id, buys
A possible query would then be:
SELECT id, SUM(id_count) AS id_count FROM (
SELECT id, 1 AS id_count FROM picks_source_1
UNION ALL
SELECT id, 1 AS id_count FROM picks_source_2
UNION ALL
SELECT id, 1 AS id_count FROM picks_source_3
UNION ALL
SELECT id, 1 AS id_count FROM picks_source_4
UNION ALL
SELECT id, 1 AS id_count FROM picks_source_5
) picks_sources GROUP BY id ORDER BY id_count DESC;