#999: Portfolio module generator