title: Quadratic Form (quad_form) over Expressions in CVXPY
body: <p>I am building risk term in a quadratic optimization problem (QP) using CVXPY and I'm struggling to combine expressions with a covariance matrix using <code>quad_form</code>.</p>
  <pre><code>from cvxpy import Variable, quad_form
  from numpy import identity
  from pandas import Series, DataFrame
  
  assets = ['AAA', 'BBB', 'CCC', 'DDD']
  optimal = Series(1 / 4, assets)
  covariances = DataFrame(identity(4) * 0.20, index=assets, columns=assets)
  covariances.iloc[2, 3] += 0.01
  covariances.iloc[3, 2] = covariances.iloc[2, 3]
  
  target = Series([Variable(name=asset) for asset in assets], index=assets)
  difference = target - optimal
  
  active_variance = quad_form(difference.values, covariances.values)
  </code></pre>
  <p>I'm getting the following error:</p>
  <pre><code>ValueError: setting an array element with a sequence.
  </code></pre>
  <p>I can just do the calculation in Pandas, but then CVXPY does not know the expression is convex.</p>
  <pre><code>active_variance = difference.T.dot(covariances).dot(difference)
  print(active_variance.curvature)
  </code></pre>
  <p>This problem is related to my <a href="https://stackoverflow.com/questions/65555695/error-passing-a-linear-expression-to-a-quadratic-form-in-docplex/65560903#65560903">earlier question with docplex</a> though the solution there doesn't work here as docplex does not require the problem be convex but CVXPY does.  Is there a correct form in CVXPY?</p>