One reason that the price series may apeare too random is that complete randomness is inherent to the series that you are generating.
Like you have mentioned, I think what one expects when looking at something like a price series is some order.
The one way, that I can think of, to get around this problem would be to actually keep track of history. Your "direction" and "variance" functions are totally independent of whats been happening prior to now.
I dont know too much about how the markets work but one thing I can think of, off hand, is the following
-
If the price starts off by growing or (dropping) maybe one could increase the chances of subsequent growth (or drop) in the 'direction' function (that way one can avoid continuous "ups and downs".
-
To balance this out one could start to increase the range of variance as the chances of moving in a particular direction increases.
This should also take care of the "crash" or "boom" as the price will grow or drop more drastically as it moves in a particular direction.
I like to think of this as the market getting more unstable as it moves in a particular direction for too long. Of course this could be a fundamentally wrong assumption but like I said I understand less of the markets than I would like to.
Of course, so far the assumption is that both the variance and the direction get reset once the direction changes. This need not be the case. It might be better to start with a high probability of moving in a particular direction and then reduce that as the price moves along that direction for too long. Also instead of a complete reset one might want to increase the variance exponentially and reduce it linearly (or the other way round).
Finally - and I find this to be useful when trying to simulate real word phenomenon - one could actually base this fictitious price index on an actual one. It need not be a direct correlation, it could be inverse or a combination of multiple real word stock indices. Of course the simulation can even draw from historical data!!