It is not. It has a subject and the word bad is being used as "mistake" or "fault," which are verbs.
Actually, "my bad" is the predicate. The mistake itself is the subject, which you're describing as "my bad." A predicate alone is not a complete sentence.
However, that doesn't make it incorrect to use in conversation. Lots of things we say aren't full sentences. Interjections are a fine example, saying "Hey!" to someone is not incorrect grammar simply because it's not a complete sentence. The subject is implied for "my bad," so it's more than fine to use colloquially. If you were talking to your boss and you forgeted up you might not wanna say "my bad," but it's fine to use in conversation and whatever teacher told you it isn't is a pedant.