Tetrahedron isn't proportional even though math seems to be correct
Input is not correct

Diagram illustrating only the top view looks directly onto a tri normal.  Hence in top view the verts are 120 degrees apart. It appears you have also used this for front (for example) and wrongly assumed the other verts would be sitting on 30 degrees south (120 degrees from north).  In front view the triangle we see has an edge angle (The tetrahedron dihedral angle of 70 degrees) from the base, as seen in right ortho view (LHS)
In an answer to this question have hard-coded a regular tetrahedrons coordinate points.
https://blender.stackexchange.com/a/143372/15543
seen as coords in code below. Note these coords are for a unit edge tetra containing verts at (0, 0, 0) and (0, 0, 1) and aligned such that an edge is parallel to x axis.

Coordinates for a regular tetrahedron
Expressed symmetrically as 4 points on the unit sphere, centroid
at the origin, with lower face level, the vertices are:
$$v_1 = \left(\sqrt{\frac{8}{9}},0,-\frac{1}{3}\right)$$
$$v_2 =
&gt; \left(-\sqrt{\frac{2}{9}},\sqrt{\frac{2}{3}},-\frac{1}{3}\right)$$
$$v_3 =
&gt; \left(-\sqrt{\frac{2}{9}},-\sqrt{\frac{2}{3}},-\frac{1}{3}\right)$$
$$v_4 = (0,0,1)$$
with the edge length of $\sqrt{\frac{8}{3}}$.

Could have changed to match these coords,  instead for example sake have:
To make the origin at the center of geometry averaged coords, and set it as the origin (0, 0, 0).
Made all the distances from origin to point unit, scaled by inverse of length.  All edges have same length..
To skin quickly used the bmesh convex hull operator.
.. and finally reported the distance and latitude and longitude from the origin point.
import bpy
from mathutils import Vector, Matrix
import bmesh
from bpy import context 
from math import degrees, pi

coords = [Vector(c) for c in (
    (0, 0, 0),
    (1, 0, 0),
    (.5, 3**.5 / 2, 0),
    (.5, 1 / 3 * 3**.5 / 2, ((3**.5 / 2)**2 - (1 / 3 * 3**.5 / 2)**2)**.5))]

o = sum(coords, Vector()) / 4

print(&quot;origin&quot;, o)

me = bpy.data.meshes.new(&quot;Tetra&quot;)
me.from_pydata(coords, [], [])
me.transform(Matrix.Translation(-o))
me.update()

# all have the same distance, not unit
for v in me.vertices:
    print(v.co.length)
# scale to unit.
me.transform(Matrix.Diagonal((1 / v.co.length, ) * 3).to_4x4())
bm = bmesh.new()
bm.from_mesh(me)
bmesh.ops.convex_hull(
    bm,
    input=bm.verts,
    )
bm.to_mesh(me)
me.update()   

# make the object
ob = bpy.data.objects.new(&quot;Tetra&quot;, me)
context.collection.objects.link(ob)

# calculate and report radius / lat / lon (local space) 
z_axis = Vector((0, 0, 1)) # north
y_axis = Vector((0, -1, 0)) # 0 longitude
for v in bm.verts:
    lat = pi / 2 - z_axis.angle(v.co)
    if v.co.xy.length &lt; 1e-7:
        lon = 0
    else:
        lon =  y_axis.xy.angle_signed(v.co.xy)
    print(v.co.length, degrees(lat), degrees(lon))

Output, spherical coordinates (in degrees)
Radius, Latitude, Longitude
----------------------------

0.9999999701976772 -19.471218922405377 60.000001669652114
0.9999999701976772 -19.471218922405377 -60.000001669652114
0.9999999478459345 -19.47122575259455 -180.00000500895632
1.0 90.0 0.0   # north pole.

In both this version and yours the distance from the origin to vert is 1, however your input latitudes are not consistent with keeping equilateral triangle faces.
Result above suggest that for a regular tetrahedron with apex at north pole, the three other points are distributed 120 degrees of longitude apart on latitude 19.47 degrees south.