In DISTINCT mode, each update is considered as unrelated with the previous one, so also an update entirely made up of with null field values is significant.
The behavior you expected is that of MERGE mode. In MERGE mode, if the Data Adapter only updates "price" and "perf" and doesn't inlclude "ask" and "bid" in the update, Lightstreamer will consider the values of the latter two as unchanged (which is the correct interpretation for this data); but, upon your subscription for only "ask" and "bid", it will not send any event to the client in this case.
If you try with MERGE mode, consider that you should also explicitly request an unlimited "BufferSize" for the item.
However, in MERGE mode the snapshot only consists of one element, which may not be what you want.

Introducing a dedicated item for this table, including only "bid" and "ask", to be used in DISTINCT mode, may make sense, if it is compatible with the whole application behavior.
The Data Adapter will take care of updating it only when "bid" and "ask" have really changed.