Let me start this by post by summarizing and clarifying my last post.
I assumed that the crafting system will not be elaborate to the point that ships, ship upgrades, and commodities will be supplied by players, these things will be supplied by npcs. Given that they are supplied by npcs, how will the developers model supply? They either limit supply in some way to create scarcity or they make supply unlimited. If they create scarcity then some will players will be blocked from acquiring these items at times. Whether it is due to being priced out of the market or from not being in the right place at the right time. I argued that players will not find scarcity fun because it either leads to bad gameplay or imbalance. That is, players with more time to play or more real world money will have an advantage. Therefore, I concluded that unlimited supply was the best option. If supply is unlimited then prices must be set artificially. Trading will only be interesting if prices are dynamic. Thus we are left with trying to figure out how to set prices artificially but make them dynamic. I then promised to offer a solution.
I believe that the pricing mechanism should have the following characteristics.
1. Prices should depend on player actions. For example, if many players are purchasing tungsten on Earth this is a signal that the buy price is low and it should go up. If no one is selling tungsten on Synthworld then the sell price is low and it should be raised.
2. Prices should not be too predictable but they should not be too unpredictable either. If prices are predictable then trading gameplay will be boring. If prices are too unpredictable then trading will be analogous to playing a slot machine. Whether you earn profit or not will depend on luck and not player skill.
3. Prices should work in such a way that there are a sufficient number of opportunities to earn a profit. It should never be the case that the best players can do is to barely cover costs. Competition works to drive prices down. We do not want prices driven down to cost. If this happens then players with lower costs (i.e. players with free lifetime insurance and free garaging) will have too much of an advantage. We want the galaxy to be competitive but not to the point where profit cannot be earned.
4. The pricing system should not be exploitable. We want players to be rewarded for cleverness and skill but not too much. For example, if some pirates set up a blockade on a fringe planet that blocks merchants from making cargo runs to the planet, then prices on the planet will go up. The pirates can have their Caterpillars filled with goods orbiting the planet just waiting for the prices to go up enough so that they can land and unload their cargo holds and get filthy rich. If prices are allowed to get too high when the pirates create this blockade, then pirates will become too rich relative to everyone else.
5. The pricing system needs to scale well. The system that is put in place needs to function under many different conditions. It needs to function when there are many players logged in and it needs to work the same way during non-peak times.
There are probably more desirable characteristics but these are the major ones I can think of for now. Feel free to suggest your own.
My pricing system will work in the following way. I would track the total quantity of a commodity sold or bought on a planet over a fixed period of time. This period could be 10 seconds, 30 seconds, a minute, 10 minutes, or an hour or more. Testing would be required to find which length of time feels best. I would then keep a record of how much was bought or sold over several time periods. For example it could be over the last 10 time periods. I would then take the average of the 10 time periods. This average is called a moving average. If the amounts bought over the last 10 time periods were 7, 5, 5, 4, 3, 5, 8, 1, 6, and 5 then the 10 period moving average would be (7+5+5+4+3+5+8+1+6+5)/10 = 4.9. I would also calculate a moving average for a shorter period. In this example I will do a 5 period moving average. Since the last five amounts were 5, 8, 1, 6, and 5 then the 5 period moving average would be (5+8+1+6+5)/5 = 5. In the case of a buy price, if the 5 period moving average exceeds the 10 period moving average then the price will go up by 1. If the price was 60 then it would become 61. The price stays at 61 until the end of the next time period. The price goes up because the shorter period moving average exceeding the longer period moving average means that purchases of the commodity are trending up. It means that more players are deciding that 60 was a good price so the system raises the price to see if 61 is a good price. Price would go down by 1 if quantity bought is trending down or if the two different period averages equal each other. It would be the opposite for quantity sold. If the amount is trending up then more people are selling at a given price so the price will go down by 1. If it is trending down or neutral then price will go up by 1.
I think that this system I have described up to now achieves objectives 1, 2, 3, and 5. Prices respond to what players are doing. If no one is purchasing then buy prices go down. If there are no sellers then sell prices go up. If too many players begin to buy or sell then prices react appropriately. Prices change but only incrementally. If the length of the time period is set appropriately then prices are not too unpredictable. But the day-to-day profitability of runs will change. You will need to pay attention to prices. There should always be opportunities to earn profit. If no one is purchasing because they do not see any way to earn a profit, then buy prices will go down and sell prices will go up until the gap in prices is sufficient so that profit opportunities are created. Since the system does not care about the absolute quantity being bought and sold, it only looks at the trend, it should scale well with the amount of players. The only objective that has not been met is number 4. To prevent exploitation there should be price ceilings and price floors. There should be a limit to how low a buy price will go. There is a believable reason for why this would be the case. These commodities cost something to produce. The producers are willing to go only so low when selling their goods to you. There should also be a limit to what a planet will pay for a commodity. This is believable as well. People on the planet have only so much income and it is likely there are substitutes for the good you are selling. These limits on prices ensure a maximum possible profit for a cargo run. It is likely that player competition will make it so that this maximum is rarely binding. It is still good to have it in place to avoid exploitation.
The following graph depicts price data from one simulation I ran in excel using this system. The blue line is the buy price on an exporting planet and the red and green lines are sell prices for two different importing planets. The simulation was run over 10,000 time periods. The minimum buy price was set at 40 and the maximum sell price was set at 120. I assumed that players would not purchase unless they saw a gap of 30 or more between the buy price and the sell price. I also assumed that they would not sell unless the gap in price was greater than 20. I assumed this to simulate players knowing that they need a gap of at least twenty to break even or just barely come out ahead. The gap of 30 to determine whether they purchase or not was to simulate that they will only purchase if they see some profit in it. I also scaled the quantities being purchased and sold over time to simulate more and more players participating in trading over the course of the simulation. It did not appear to change the system in any way. I feel like the movement of prices was sufficiently chaotic to make trading interesting.
Feel free to share your thoughts on my proposal.