I have tried the following and these are my experiences
1. Direct wire transfer from a bank to SBI account
Transfered through Ally Bank to my SBI NRE account. They charged 25 dollars for the international wire transfer. I got the rate shown at
https://remit.onlinesbi.com/glsremit/exchangerate.htm for that day.
SBI will set the exchange rate at 11 am IST. The money gets deposited the next business day at 12:00 PM IST (so you get the rate set at 11 am).
2. SBI Online Remit
You need to create an account here
https://remit.onlinesbi.com/This has two options
1. Express remit Remittance: There is a 10K limit and when you make the transfer they will provide the estimated transfer date(this is the fifth working business day) You get the rate as shown in the above link. Again the amount gets deposited on 12:00 PM IST
2. Rapid remittance: This involves a wire transfer. You initiate the transaction and print the form, take it to ypur US bank and ask them to deposit the amount in the SBI account mentioned in the form. The amount gets deposited the next businbess day. Since this is a domestic transfer you need to pay the domestic wire transfer rates.
This has a limit of 100K per year (the year is based on your account opening date).
3. ICICI money to india
This is similar to SBI remit options above (althought there is no limit on the amount you can transfer through wire transfer). However I have seen that ICICI has been offering zero service charges and 5 paise more, in the last few months
Besides ICICI keeps adjusting the exchange rate throughout the day whereas SBI will do this only once at 11:00 am. So based on how the exchange rate moves through the day you can see differences in the exchange rate.