I just read your script more carefully. It's not correct. What you were calculating is indeed the FM configuration (but started in a unpolarized state) because the initial spins are defined, but never used. They need to go into the calculator setup. That is, move up the initial spin before "setCalculator" and ensure you have
nio.setCalculator(calculator, initial_spin=initial_spin)
I would set the initial spin on oxygen to zero.
Also, in the future, you are able to immediately see from the log file when the calculation starts (that is, you don't need to wait to the end of a long calculation to troubleshoot it) if your initial spins are taken into account. In the correct case, the first DFT iteration shows
+------------------------------------------------------------------------------+
| Density Matrix Report DM[U] DM[D] DD |
+------------------------------------------------------------------------------+
| 0 Ni [ 0.000 , 0.000 , 0.000 ] 7.54340 9.29459 -1.16201 |
| 1 O [ 2.098 , 2.098 , 2.098 ] 3.58101 3.58101 1.16202 |
| 2 Ni [ 4.195 , 4.195 , 4.195 ] 9.29458 7.54340 -1.16202 |
| 3 O [ 6.293 , 6.293 , 6.293 ] 3.58101 3.58101 1.16202 |
+------------------------------------------------------------------------------+
| 0 E = -64.1575 dE = 7.831410e-01 dH = 2.827458e-01 |
+------------------------------------------------------------------------------+
indicating the correct AFM starting point (the two Ni atoms have opposite up/down populations DM[Up] and DM[Down]). But in your case, without initial_spin set, this output will show something like
+------------------------------------------------------------------------------+
| Density Matrix Report DM[U] DM[D] DD |
+------------------------------------------------------------------------------+
| 0 Ni [ 0.000 , 0.000 , 0.000 ] 8.57510 8.57510 -0.84980 |
| 1 O [ 2.098 , 2.098 , 2.098 ] 3.42499 3.42499 0.84998 |
| 2 Ni [ 4.195 , 4.195 , 4.195 ] 8.57492 8.57492 -0.85015 |
| 3 O [ 6.293 , 6.293 , 6.293 ] 3.42499 3.42499 0.84998 |
+------------------------------------------------------------------------------+
| 0 E = -63.7305 dE = 9.782606e-01 dH = 1.778453e-01 |
+------------------------------------------------------------------------------+
which is clearly an unpolarized state and up/down populations are identical for the two atoms of each element. This changes over the SCF loop to produce a polarized state, but ferromagnetic.
(I lowered the k-point sampling to 3x3x3 to run faster, so the numbers are not exactly the same as for 10x10x10.)