nx_fin_mgmt_grade_gate.nx source
↩ module page · 68 lines · 3582 B
1// nx_fin_mgmt_grade_gate.nx -- proves the management-stewardship grader ("handicap the team"): each of the 8
2// governance tests fires correctly, the composite score maps to the right letter grade, and the boundaries
3// hold. Exits 0 iff ALL pass. license_tier: ORIGINAL
4import "nx_syscalls.nx"
5import "nx_fin_mgmt_grade.nx"
6
7func g_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
8func g_putn(v: i64) -> i64 {
9 if v == 0 { sys_write(1, "0" as *u8, 1); return 0 }
10 var m: i64 = v; if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m }
11 let d: *u8 = sys_mmap(24); var k: i64 = 0
12 while m > 0 { d[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
13 var j: i64 = k - 1
14 while j >= 0 { sys_write(1, ((d as i64)+j) as *u8, 1); j = j - 1 }
15 return 0
16}
17func chk(name: *u8, got: i64, want: i64, st: *i64) -> i64 {
18 if got == want { st[0] = st[0] + 1; g_puts(" PASS "); g_puts(name); g_puts("\n") }
19 else { st[1] = st[1] + 1; g_puts(" FAIL "); g_puts(name); g_puts(" got="); g_putn(got); g_puts(" want="); g_putn(want); g_puts("\n") }
20 return 0
21}
22
23func main() -> i64 {
24 let st: *i64 = sys_mmap(16) as *i64
25 st[0] = 0; st[1] = 0
26
27 // EXCELLENT STEWARDS: insiders buying, ROCE 20, ROIC 18 > WACC 9, pay 50x, board 80% indep, say 95%, clean
28 // all 8 tests fire -> score 8 -> A
29 let se: i64 = mg_score(1000, 20, 18, 9, 50, 80, 95, 0)
30 g_puts(" [info] excellent score = "); g_putn(se); g_puts("\n")
31 chk("excellent stewards -> score 8", se, 8, st)
32 chk("excellent stewards -> grade A", mg_grade(se), MG_A, st)
33
34 // VALUE-DESTROYERS: insiders selling, ROCE 5, ROIC 6 < WACC 10, pay 500x, board 30%, say 40%, 2 restatements
35 // no test fires -> score 0 -> F
36 let sf: i64 = mg_score(0 - 500, 5, 6, 10, 500, 30, 40, 2)
37 g_puts(" [info] destroyer score = "); g_putn(sf); g_puts("\n")
38 chk("value-destroyers -> score 0", sf, 0, st)
39 chk("value-destroyers -> grade F", mg_grade(sf), MG_F, st)
40
41 // MIXED: insiders +1 (T1), ROCE 15 (T2), ROIC 10 == WACC 10 (T3 no, T8 no), pay 250 (T4 no), board 40 (T5 no),
42 // say 60 (T6), clean (T7) -> T1,T2,T6,T7 = score 4 -> C
43 let sm: i64 = mg_score(1, 15, 10, 10, 250, 40, 60, 0)
44 g_puts(" [info] mixed score = "); g_putn(sm); g_puts("\n")
45 chk("mixed management -> score 4", sm, 4, st)
46 chk("mixed management -> grade C", mg_grade(sm), MG_C, st)
47
48 // INDIVIDUAL TESTS isolate (flip one signal at a time off the excellent baseline)
49 chk("T1: insider SELLING drops a point", mg_score(0 - 1, 20, 18, 9, 50, 80, 95, 0), 7, st)
50 chk("T3+T8: ROIC<=WACC drops TWO (value + spread)", mg_score(1000, 20, 8, 9, 50, 80, 95, 0), 6, st)
51 chk("T4: excessive pay drops a point", mg_score(1000, 20, 18, 9, 999, 80, 95, 0), 7, st)
52 chk("T7: a restatement drops a point", mg_score(1000, 20, 18, 9, 50, 80, 95, 1), 7, st)
53
54 // GRADE BOUNDARIES (score -> letter)
55 chk("score 7 -> A", mg_grade(7), MG_A, st)
56 chk("score 6 -> B", mg_grade(6), MG_B, st)
57 chk("score 5 -> B", mg_grade(5), MG_B, st)
58 chk("score 4 -> C", mg_grade(4), MG_C, st)
59 chk("score 3 -> C", mg_grade(3), MG_C, st)
60 chk("score 2 -> D", mg_grade(2), MG_D, st)
61 chk("score 1 -> D", mg_grade(1), MG_D, st)
62 chk("score 0 -> F", mg_grade(0), MG_F, st)
63
64 g_puts("nx_fin_mgmt_grade_gate: PASS="); g_putn(st[0]); g_puts(" FAIL="); g_putn(st[1]); g_puts("\n")
65 if st[1] == 0 { g_puts("MARKETS R-MKT5 nx_fin_mgmt_grade: GREEN\n"); return 0 }
66 g_puts("MARKETS R-MKT5 nx_fin_mgmt_grade: RED\n")
67 return 1
68}