Eu usaria o cron conforme sua primeira tentativa. Mas desta vez, faça duas coisas. Use um caminho absoluto para o binário python (ou declare uma variável de caminho no cabeçalho). E ter a saída do trabalho cron cuspido em um arquivo para que você possa ver o que está errado.
Então, algo como:
30 4 * * 1-5 /Library/Frameworks/Python.framework/Versions/2.7/bin/python /Users/lego90511/PycharmProjects/Stock\ Scanner/stock_scanner.py >> /tmp/cron.out
Você deve ser capaz de ver o que está errado lendo a saída em /tmp/cron.out
Espero que ajude.