With 10MB blocks, costs of running a node would increase exponentially.
Missed your post, but can you show source about exponential growth? What i know is only about quadratic growth verification time for certain signature, but SegWit already fix it.
Source :
https://bitcoincore.org/en/2016/01/26/segwit-benefits/#linear-scaling-of-sighash-operations1. What's the reason behind 0.1MB as min and 10MB as max?
The transaction fees will eventually be the only source of income for the miners so we need a system that will force the user to "tip the miner" but which will also allow more block space for peak periods. A 10MB limit seems reasonable, the max yearly storage space that could be required would be approximately 0.5TB. A 0.1MB min gives enough space for most transactions.
At least the number isn't entirely arbitrary picked.
2. How many previous block should be considered to calculate average transaction fee?
One.
3. How often should block limit changed?
On every block.
The number you chose have some obvious problem, have you considered the possibility of
1. Miner mine 2 blocks at once, where the 2nd block usually are empty.
2. Analysis which shows certain days allows you move Bitcoin quickly with lower fees. See
https://bitcointalk.org/index.php?topic=5250569.0.
3. Messing with various transaction fee estimation algorithm, which leads user pays too much or waiting too long.
I think that an immediate adjustment to the change in price would be the best...
You can't include external data without oracle or someone who you must trust.
and I haven't studied the data supporting it.
Does that mean you found data used for BIP 103? I skimmed
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-July/thread.html#9763, but couldn't find any link of data supporting it.