Я не уверен насчет PostgreSQL, но могу подтвердить, что вы на правильном пути. Когда вы имеете дело с большими объемами данных, разделяя данные на несколько таблиц и затем используя какой-то генератор запросов для построения ваших запросов, это абсолютно правильный путь. Этот подход хорошо зарекомендовал себя в хранилищах данных, особенно в данных о вашем фондовом рынке.
Однако мне любопытно, зачем вам обновлять исторические данные? Если вы имеете дело с разделением акций, то обычно это реализуют, используя отдельную таблицу коэффициентов, которая используется вместе с необработанными историческими данными для получения точной цены / доли.