code wiki / _hdl_build / nx_flip_real.nx
nx_flip_real.nx source
↩ module page · 224 lines · 9867 B
1// nx_flip_real.nx -- REAL-VALUE vs NOMINAL-PRICE discriminator + triangulated manipulation gate.
2// Value = bottom-up NET TANGIBLE (goodwill/intangibles EXCLUDED as accounting air). A balance sheet
3// IS a part list. backing_bps = net_tangible*10000/nominal ; air_bps = 10000-backing.
4// MANIPULATION GATE (feedback-market-intelligence-captain-moroni-discipline): PROVEN only on THREE
5// independent evidence sources; <3 = UNPROVEN (reported, never acted on, never amplified). No concept
6// of a group or person by construction. COVERAGE: TANGIBLE with no offsetting LIABILITY = REFUSED.
7// PRECEDENCE: manipulation(3) > incomplete(4) > value.
8//
9// CONVERTED ONTO THE SHARED BASE nx_flip_lib.nx (fx_*); only fr_ev_present (evidence-cell presence)
10// stays local. Equivalence PROVEN by nx_flip_gate staying 16/16 across the swap.
11// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
12import "nx_flip_lib.nx"
13import "nx_syscalls.nx"
14
15const FR_ARGC_MIN: i64 = 5
16const FR_ARG_PFX: i64 = 5
17const FR_EVIDENCE_N: i64 = 3
18const FR_CFG_MINBACK: i64 = 1
19const FR_CFG_REQTRI: i64 = 3
20const FR_CFG_REQLIAB: i64 = 5
21const FR_V_ASSET: i64 = 1
22const FR_V_COMP: i64 = 2
23const FR_V_KIND: i64 = 3
24const FR_V_AMT: i64 = 4
25const FR_M_ASSET: i64 = 1
26const FR_M_PRACTICE: i64 = 2
27const FR_M_EV0: i64 = 3
28
29// an evidence cell counts ONLY if non-empty and not the '-' placeholder (real-specific)
30func fr_ev_present(b: *u8, ls: i64, le: i64, idx: i64, sp: *i64) -> i64 {
31 if fx_col(b, ls, le, idx, sp) == 0 { return 0 }
32 if sp[1] <= sp[0] { return 0 }
33 if fx_slice_eqs(b, sp[0], sp[1], "-" as *u8) == 1 { return 0 }
34 return 1
35}
36
37func main(argc: i64, argv: *i64) -> i64 {
38 if argc < FR_ARGC_MIN {
39 fx_puts("usage: nx_flip_real <class> <asset> <nominal-price> <days> [plane-prefix-root]\n" as *u8)
40 fx_puts(" real value is read from <root>val- ; manipulation flags from <root>manip- ; thresholds from <root>realcfg-\n" as *u8)
41 sys_exit(FX_EXIT_USAGE)
42 return FX_EXIT_USAGE
43 }
44 let cls: *u8 = argv[1] as *u8
45 let asset: *u8 = argv[2] as *u8
46 let nominal: i64 = fx_atoi(argv[3] as *u8)
47 let days: i64 = fx_atoi(argv[4] as *u8)
48
49 var root: *u8 = "flip-" as *u8
50 if argc > FR_ARG_PFX { root = argv[FR_ARG_PFX] as *u8 }
51 let ncp: *i64 = sts_mm(FX_SCRATCH) as *i64
52 let nvp: *i64 = sts_mm(FX_SCRATCH) as *i64
53 let nmp: *i64 = sts_mm(FX_SCRATCH) as *i64
54 let bc: *u8 = fx_plane(root, "realcfg-" as *u8, ncp)
55 let bv: *u8 = fx_plane(root, "val-" as *u8, nvp)
56 let bm: *u8 = fx_plane(root, "manip-" as *u8, nmp)
57 let nc: i64 = ncp[0]
58 let nv: i64 = nvp[0]
59 let nm: i64 = nmp[0]
60
61 let sp: *i64 = sts_mm(FX_SCRATCH) as *i64
62 let cr: *i64 = sts_mm(FX_SCRATCH) as *i64
63 let cs: *i64 = sts_mm(FX_SCRATCH) as *i64
64 let pb: *u8 = sts_mm(FX_BUF)
65 var po: i64 = 0
66
67 if nc == 0 {
68 fx_puts("FLIP-RED reason=realcfg-plane-empty prefix=" as *u8); fx_puts(fx_cat2(root, "realcfg-" as *u8)); fx_puts("\n" as *u8)
69 sys_exit(FX_EXIT_REFUSED)
70 return FX_EXIT_REFUSED
71 }
72 if fx_row_by_id(bc, nc, cls, cr, sp) == 0 {
73 fx_puts("FLIP-RED reason=unknown-real-value-class class=" as *u8); fx_puts(cls); fx_puts("\n" as *u8)
74 sys_exit(FX_EXIT_REFUSED)
75 return FX_EXIT_REFUSED
76 }
77 let min_back: i64 = fx_col_atoi(bc, cr[0], cr[1], FR_CFG_MINBACK, sp)
78 let req_tri: i64 = fx_col_atoi(bc, cr[0], cr[1], FR_CFG_REQTRI, sp)
79
80 // ---- value components: the balance sheet IS a part list ----
81 var tangible: i64 = 0
82 var intangible: i64 = 0
83 var liab: i64 = 0
84 var flow: i64 = 0
85 var n_comp: i64 = 0
86 var n_liab: i64 = 0
87 var i: i64 = 0
88 while i < nv {
89 let le: i64 = fx_line_end(bv, nv, i)
90 if le > i {
91 if fx_col(bv, i, le, FR_V_ASSET, sp) == 1 {
92 if fx_slice_eqs(bv, sp[0], sp[1], asset) == 1 {
93 n_comp = n_comp + 1
94 fx_col(bv, i, le, FR_V_COMP, cs)
95 let amt: i64 = fx_col_atoi(bv, i, le, FR_V_AMT, sp)
96 var kind: i64 = 0
97 if fx_col(bv, i, le, FR_V_KIND, sp) == 1 {
98 if fx_slice_eqs(bv, sp[0], sp[1], "TANGIBLE" as *u8) == 1 { kind = 1 }
99 if fx_slice_eqs(bv, sp[0], sp[1], "INTANGIBLE" as *u8) == 1 { kind = 2 }
100 if fx_slice_eqs(bv, sp[0], sp[1], "LIABILITY" as *u8) == 1 { kind = 3 }
101 if fx_slice_eqs(bv, sp[0], sp[1], "FLOW" as *u8) == 1 { kind = 4 }
102 }
103 if kind == 1 { tangible = tangible + amt }
104 if kind == 2 { intangible = intangible + amt }
105 if kind == 3 { liab = liab + amt; n_liab = n_liab + 1 }
106 if kind == 4 { flow = flow + amt }
107 po = fx_bcat(pb, po, "COMP " as *u8)
108 po = fx_bcatsl(pb, po, bv, cs[0], cs[1])
109 po = fx_bcat(pb, po, " amount=" as *u8); po = fx_bcatn(pb, po, amt)
110 po = fx_bcat(pb, po, " kind=" as *u8)
111 if kind == 1 { po = fx_bcat(pb, po, "TANGIBLE-counts" as *u8) }
112 if kind == 2 { po = fx_bcat(pb, po, "INTANGIBLE-EXCLUDED-this-is-the-air" as *u8) }
113 if kind == 3 { po = fx_bcat(pb, po, "LIABILITY-subtracts" as *u8) }
114 if kind == 4 { po = fx_bcat(pb, po, "FLOW-reported-only" as *u8) }
115 if kind == 0 { po = fx_bcat(pb, po, "UNKNOWN-KIND-ignored" as *u8) }
116 po = fx_bcat(pb, po, "\n" as *u8)
117 }
118 }
119 }
120 i = le + 1
121 }
122
123 // ---- manipulation: PROVEN only on 3 independent evidence sources ----
124 var man_proven: i64 = 0
125 var man_unproven: i64 = 0
126 i = 0
127 while i < nm {
128 let le: i64 = fx_line_end(bm, nm, i)
129 if le > i {
130 if fx_col(bm, i, le, FR_M_ASSET, sp) == 1 {
131 if fx_slice_eqs(bm, sp[0], sp[1], asset) == 1 {
132 var ev: i64 = 0
133 var k: i64 = 0
134 while k < FR_EVIDENCE_N {
135 ev = ev + fr_ev_present(bm, i, le, FR_M_EV0 + k, sp)
136 k = k + 1
137 }
138 fx_col(bm, i, le, FR_M_PRACTICE, cs)
139 po = fx_bcat(pb, po, "MANIP " as *u8)
140 po = fx_bcatsl(pb, po, bm, cs[0], cs[1])
141 po = fx_bcat(pb, po, " evidence_sources=" as *u8); po = fx_bcatn(pb, po, ev)
142 po = fx_bcat(pb, po, " status=" as *u8)
143 if ev >= FR_EVIDENCE_N {
144 man_proven = man_proven + 1
145 po = fx_bcat(pb, po, "TRIANGULATED-BLOCKS-TRADE" as *u8)
146 } else {
147 man_unproven = man_unproven + 1
148 po = fx_bcat(pb, po, "UNPROVEN-reported-never-acted-on-never-amplified" as *u8)
149 }
150 po = fx_bcat(pb, po, "\n" as *u8)
151 }
152 }
153 }
154 i = le + 1
155 }
156
157 if nominal <= 0 {
158 fx_puts("FLIP-RED reason=nominal-price-must-be-positive\n" as *u8)
159 fx_puts("verdict=REFUSED\n" as *u8)
160 sys_exit(FX_EXIT_REFUSED)
161 return FX_EXIT_REFUSED
162 }
163 if n_comp == 0 {
164 fx_puts("FLIP-RED reason=no-value-components-for-asset asset=" as *u8); fx_puts(asset); fx_puts("\n" as *u8)
165 fx_puts("verdict=REFUSED\n" as *u8)
166 fx_puts("rule=absent-analysis-is-not-clean-analysis\n" as *u8)
167 sys_exit(FX_EXIT_REFUSED)
168 return FX_EXIT_REFUSED
169 }
170
171 let net_tangible: i64 = tangible - liab
172 let backing: i64 = net_tangible * FX_BPS / nominal
173 let air: i64 = FX_BPS - backing
174
175 var blocked: i64 = 0
176 if req_tri == 1 {
177 if man_proven > 0 { blocked = 1 }
178 } else {
179 if man_proven + man_unproven > 0 { blocked = 1 }
180 }
181
182 let req_liab: i64 = fx_col_atoi(bc, cr[0], cr[1], FR_CFG_REQLIAB, sp)
183 var incomplete: i64 = 0
184 if req_liab == 1 { if n_liab == 0 { incomplete = 1 } }
185
186 var vcode: i64 = 0
187 if blocked == 1 { vcode = 3 } else { if incomplete == 1 { vcode = 4 } else { if backing >= min_back { vcode = 1 } } }
188
189 fx_puts("FLIP-REAL\n" as *u8)
190 fx_puts("class=" as *u8); fx_puts(cls); fx_puts(" asset=" as *u8); fx_puts(asset); fx_puts("\n" as *u8)
191 fx_puts("verdict=" as *u8)
192 if vcode == 3 { fx_puts("REFUSED" as *u8) }
193 if vcode == 4 { fx_puts("REFUSED" as *u8) }
194 if vcode == 1 { fx_puts("BUY" as *u8) }
195 if vcode == 0 { fx_puts("PASS" as *u8) }
196 fx_puts(" liability_rows=" as *u8); fx_putn(n_liab)
197 fx_puts(" backing_bps=" as *u8); fx_putn(backing)
198 fx_puts(" air_bps=" as *u8); fx_putn(air)
199 fx_puts(" manip_proven=" as *u8); fx_putn(man_proven)
200 fx_puts(" manip_unproven=" as *u8); fx_putn(man_unproven)
201 fx_puts("\n" as *u8)
202 fx_puts("rule=" as *u8)
203 if vcode == 3 { fx_puts("triangulated-manipulation-blocks-trade\n" as *u8) }
204 if vcode == 4 { fx_puts("incomplete-balance-sheet-tangible-with-no-offsetting-liability-overstates-real-value\n" as *u8) }
205 if vcode == 1 { fx_puts("net-tangible-value-covers-nominal-price\n" as *u8) }
206 if vcode == 0 { fx_puts("price-not-covered-by-real-value-the-rest-is-inflation\n" as *u8) }
207
208 fx_kv("components" as *u8, n_comp)
209 fx_kv("tangible" as *u8, tangible)
210 fx_kv("liabilities" as *u8, liab)
211 fx_kv("net_tangible" as *u8, net_tangible)
212 fx_kv("intangible_excluded" as *u8, intangible)
213 fx_kv("flow_reported" as *u8, flow)
214 fx_kv("nominal" as *u8, nominal)
215 fx_kv("backing_bps" as *u8, backing)
216 fx_kv("air_bps" as *u8, air)
217 fx_kv("min_backing_bps" as *u8, min_back)
218 fx_kv("require_triangulation" as *u8, req_tri)
219 fx_kv("days" as *u8, days)
220
221 sys_write(FX_OUT, pb, po)
222 sys_exit(0)
223 return 0
224}