I will speak about the economic part. In a game I want to develop I want to introduce real economics subjects as well.
There are two ways you can do that.
You can actually use macroeconomics mathematical models to describe the world (description of people behaviour at aggregate level). There are models on stock exchanges (on why and when people prefer stocks to bonds and viceversa), on commodity international exchange as well. There are also models on migration between countries. The subject is called "international economics" and "monetary economics". I suggest you to google that and study starting from the trivial models.
But I thought I can do even something better. I asked myself the following question: exactly why I cannot simulate each single person to describe their behaviour in the economy and then aggregate it? This by starting from microeconomics principles!
Well because of execution time in my game. So my idea is this one, and I will try to implement it in the near future.
If you want to simulate 100.000 people behaviour with microeconomics decisions, just create a different thread that will run in another core, so that I will not affect the real time of the game. Than every second I will compute the behaviour and choises of 2000 people, so that in less every 60 seconds all the behaviour of my 100.000 will be assessed and taken into account.
Every second the game will incorporate the decision of the people that have already decided what to do and then the economy will evolve by people that keep deciding through out the game.
This will move prices of financial assets and commodities, will make people migrate from countries... in short will simulate all the economical world from a microeconomics prospective rather than a macroeconomics one.
Hope I will be able to implement this and hope I gave you at least a nice idea.