All the solutions do require extremely high amount of capital in order to bring create a market where a token can be effectively shorted. If you are to create a more efficient market you could create a smart contract that would function as a crypto broker.
In the stock market, if you want to short the stock of any company , you usually borrow the stock from the broker for a fixed interest rate, sell it , then buy it back when you want to cover your short. With a smart contract, this could be achieved also. On one side you have dedicated parties holding long positions, their investment horizon is of more than 6 months , so they plan to hold the token long term rather than simply speculate on it. They could be incentivized to lend these tokens out to other parties to short at a certain interest rate.
The parties who want to short the token would have to deposit twice the total value of the tokens in ether plus the interest payable on borrowing those tokens to the smart contract. So the smart contract now is a repository for their ether. If the tokens go to zero, then the party cannot get their ether back.One way to get a constant stream of token prices would be whenever you call a function on that contract, the contract will get the token price through oracle and automatically adjust what the value of your position in ether.
x is the amount of ether deposited
0.5x is the initial value of the tokens in ether
y is the value of one token in ether
\delta is the interest payable on borrowing the tokens
The total number of tokens you short would be
z =\frac x{2y}
So right now the contract holds x ether and you have shorted z tokens.
What happens if the value of the token goes up ?
if the value of the token goes up by 50%, then right now you would have a loss of 0.25x +\delta. So at this point the shorting party has two choices either he/she can cover their short by buying back the tokens and then exchanging those tokens with the smart contract for around 0.25x - \delta(with the borrowing fee subtracted), or if they believe that the price appreciation is only temporary and it will go down in the future, they maintain their short position.
So if the price rises further , then there will come a point where the shorting party will be in the red for about 0.5x(this includes the borrwing fee). At this point the smart contract will have to close the position and would regard the shorting party as insolvent as the value of tokens has risen above their deposited margin. Now the smart contract would interact with another contract(etherdelta or something similar) and try to buy back those tokens. Before x ether could buy you 2z tokens now it will only get you z tokens. Which is incidentally also the amount of tokens you initially lent out .
What happens if the price of the token goes down ?
If the price drops by about 50% , the shorting party has an unrealized gain of about 0.25x -\delta, if they decide to close their position and pocket the profit then they could return the z tokens to the smart contract and get back x-\delta eth. Their net profit would roughly be about 0.25x -\delta.
If they decide to hold their short position and the token loses all its value, then they could exchange z tokens with the smart contract and get back x-\delta eth. Their net profit would roughly be 0.5x - \delta
This mechanism is one way that I see as enabling parties to build up short positions in the market, which would allow for a much more efficient price discovery of the value of the tokens. The limitations of something like this would be that the contract would constantly be need to be fed the price of the tokens, so someone would have to be constantly calling functions on the contract so that the contract can constantly update short positions of all the parties using the contract. I imagine this would be very expensive due to the amount of gas required. Also this would be limited to only ERC-20 tokens