Any toratope is finite and symmetric, so it has a definite centre point. In n-space, this point has n translational degrees of freedom. From now on, we can assume that the toratope is centred at the origin.

Each radius of a toratope is a free parameter, so each pair of parentheses () adds one DOF. Simple enough.

What about orientation?

In 2D, all circles (II) have the same orientation (0 DOF). Same with any (n-1)-sphere (III), (IIII), etc.

In 3D, the orientation of a torus ((II)I) is determined by its core circle (II)I, or by the plane of that circle. This can be described with a bivector. Bivectors in 3D have 3 DOF, but the magnitude will be ignored, leaving 2 DOF.

In 4D, the orientation of a ((II)II) is again determined by the core circle (II)II or its plane. General bivectors in 4D have 6 DOF, but one representing a plane must be simple; its wedge product with itself must be B^B=0. This is a quadvector equation, which in 4D is equivalent to a scalar equation, only removing 1 DOF. Thus, simple bivectors have 5 DOF. Again, we don't care about the magnitude of B, so a plane's orientation has 4 DOF.

The orientation of a ((III)I) depends on the 3D subspace of its core sphere (III)I. This is represented by a trivector T, which in 4D is equivalent to a vector, having 4 DOF. Ignoring the magnitude of T, this leaves 3 DOF for the core's orientation.

The orientation of a (((II)I)I) must be studied in two parts, the circle (II)II, and the torus ((II)I)I. We'll leave this for later.

In general, a k-dimensional subspace of n-space is represented by a k-blade B, a special type of grade k multivector. It's special in that its square BB must be a scalar. Its magnitude has no effect on orientation, so we can require its square to be exactly 1 or -1. The expression BB has components of grade 0,2,4,...,2k-2,2k, each of which can be further decomposed into (n choose j) scalar components. So the multivector equation BB=1 is decomposed into this many different scalar equations:

sum_{0<=j<=2k, j even} (n choose j) = 1 + n(n-1)/2! + n(n-1)(n-2)(n-3)/4! + ... + (n choose 2k)

The problem is, some of these equations are redundant, and don't remove a DOF. For example, with n=3 and k=1 (ordinary vector v), the above expression is 1+3; the first equation would say v is a unit vector (|vv|=1), but the last three would say the bivector part of vv is 0, which was already true for any vector.