KPM method produces negative local density of states
The following code snippet proves this fact:
import kwant
H = kwant.rmt.gaussian(3, 'A', rng=2)
def projector(bra, ket):
return bra[1].conjugate() * ket[1]
spectrum = kwant.kpm.SpectralDensity(H, operator=projector, num_moments=3, num_rand_vecs=1, rng=18)
print(min(spectrum.densities))