I believe there are several ways you can tackle your problems.
First, you mentioned that your perform several optimizations. One solution that comes to mind instead of speeding up the optimization itself is to perform the optimizations in parallel, so you could look at Mathwork's Parallel Computing Toolbox.
Second, providing the optimizer with a good initial guess reduces the execution time, by how much depends on the problem. In this case the optimal weights for the previous day can be such a guess.
Third, if you want to speed up the optimization, you have basically two approaches.
Either you can use the same method but with a package that is implement in a more optimal fashion, and you could look at packages such as NAG's.
Otherwise, you believe that there is another method that would be better at finding a solution. I've seen people use Conic Optimization for this kind of problems and I know that MOSEK have a MATLAB package for that method. You can also have a look at their white paper for more details about this approach.
For more theory on numerical optimizations such as quadratic programming you could take a look at Numerical Optimization by Nocedal and Wright.