## Step 1: Define the symbolic variables
Let's define the symbolic variables as follows:
- $x_1$ : amount invested in stocks
- $x_2$ : amount invested in options
- $x_3$ : amount invested in security swaps
- $x_4$ : amount invested in futures

## Step 2: Formulate the objective function
The objective is to maximize the annual return on investment. Given the annual rates of return are 11% for stocks, 30% for options, 5% for security swaps, and 15% for futures, the objective function can be written as:
\[ \max \quad 0.11x_1 + 0.30x_2 + 0.05x_3 + 0.15x_4 \]

## 3: Define the constraints
Based on the problem description, we have the following constraints:
1. The total amount invested is $3,200,000:
\[ x_1 + x_2 + x_3 + x_4 \leq 3200000 \]
2. The amount invested in futures cannot exceed the amount invested in stocks:
\[ x_4 \leq x_1 \]
3. At most 35% of the total amount invested may be in futures:
\[ x_4 \leq 0.35 \times 3200000 \]
\[ x_4 \leq 1120000 \]
4. The amount invested in options cannot exceed the amount invested in security swaps:
\[ x_2 \leq x_3 \]
5. Non-negativity constraints:
\[ x_1, x_2, x_3, x_4 \geq 0 \]

## 4: Symbolic Representation
The symbolic representation of the problem is:
```json
{
'sym_variables': [('x1', 'stocks'), ('x2', 'options'), ('x3', 'security swaps'), ('x4', 'futures')],
'objective_function': '0.11*x1 + 0.30*x2 + 0.05*x3 + 0.15*x4',
'constraints': [
    'x1 + x2 + x3 + x4 <= 3200000',
    'x4 <= x1',
    'x4 <= 1120000',
    'x2 <= x3',
    'x1, x2, x3, x4 >= 0'
]
}
```

## 5: Gurobi Code
Now, let's implement this linear programming problem using Gurobi in Python:
```python
import gurobi

def solve_hedge_fund_investment():
    # Create a new model
    model = gurobi.Model()

    # Define the variables
    x1 = model.addVar(name="stocks", lb=0)
    x2 = model.addVar(name="options", lb=0)
    x3 = model.addVar(name="security_swaps", lb=0)
    x4 = model.addVar(name="futures", lb=0)

    # Objective function: maximize return
    model.setObjective(0.11*x1 + 0.30*x2 + 0.05*x3 + 0.15*x4, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(x1 + x2 + x3 + x4 <= 3200000, name="total_investment")
    model.addConstr(x4 <= x1, name="futures_vs_stocks")
    model.addConstr(x4 <= 1120000, name="futures_limit")
    model.addConstr(x2 <= x3, name="options_vs_swaps")

    # Solve the model
    model.optimize()

    # Print the solution
    if model.status == gurobi.GRB.OPTIMAL:
        print("Optimal solution found.")
        print(f"Stocks: {x1.varValue}")
        print(f"Options: {x2.varValue}")
        print(f"Security Swaps: {x3.varValue}")
        print(f"Futures: {x4.varValue}")
        print(f"Max Return: {model.objVal}")
    else:
        print("No optimal solution found.")

solve_hedge_fund_investment()
```