I 've looked into it. For csa side, it works ok. Charleston trade port gives +9$, along with armory (1$), warehouse (5$) and shipyard (2$), totals to 17$. When blockade percentage, NM and loyalty is factored in, it comes down to 10$ - the devs know the exact formula.
If NY makes only 3$ while having a trade port, it is a bug. Since blockade percentage is the only difference in calculating port income between usa and csa, maybe it calculated that new york is 100% blockaded

. Obviously a bug.
On the other hand, if trade port gives only 1$, 1+1+5+2=9 $, meaning Charleston trade port could be giving only 1$ as well, but without blockade percentage factoring it down?