I have a friend whose business is helping companies save money on their utility bills (gas, electricity, telephone etc.). His business model is to approach a prospect and offer to analyze their bills and help them save money in exchange for a fixed percentage of the savings, which if memory serves me is 20% in his case. He will often find that there have been overcharges in the past which he helps the company recoup from the utility as well as helping them save money going forward by perhaps changing vendors, selecting different plans etc. He virtually always find some savings, so it is rarely a waste of his time.
It sounds like you are doing something similar, and pricing based upon a percentage of the actual savings realized seems like a win-win for you and the company. Of course if you are unable to deliver a system that in fact achieves the anticipated savings then you are taking a risk.
One big factor here is that if they do it themselves they save nothing in the first year (since it will take them 12 months to implement). You on the other hand can presumably implement in 4 months, resulting in 8 months of savings in the first year that they would otherwise loose. This is $160,000.
Why not propose splitting the first year savings 50-50 and then a lower percentage (20% perhaps) for follow on years? That way you get $80,000 in year one and $40,000 in follow on years. $40,000 is low enough that they would have virtually no incentive to ever want to replace you with an alternative solution.
Addressing TimJ's comment that you could simply address this as a standard programming job on a time and materials basis. This is a good option as well, and you should probably offer the company both options and let them choose. The big difference would be that under this option it would be a standard engagement, with no incentive for you to finish early.
I assume that your 4 month estimate is based upon doing the job on an expedited basis ( that is you may work nights and weekends) so that you participate in the maximum savings possible. By implication if you only work normal hours it will take longer.
So the choice for them would really boil down to:
1) Handle as a normal programming engagement with completion estimated at perhaps 6-7 months, no overtime.
2) Expedited programming engagement with completion in 4-5 months but with overtime so it costs them much more.
3) Project where your only compensation is percent of savings but where you are highly incentiveised to finish quickly because each month of delay is a month where no one gets any benefit, that us the savings for that month are lost forever. Further you are not just programming to their specifications but rather encouraged to be creative and figure the maximum savings possible. This is much different from a normal programming engagement where you simply implement the specifications defined by the client.