You are sending your date as a varchar
cmd1.Parameters.AddWithValue("@Activedate", SqlDbType.VarChar).Value = date;
and putting @tblActiveSubBroker into your procedure as varchar. Then you try to convert it to a date on insert to table.
This is not a good approach.You should do the converting in your code before sending it to sql.
var myDate = DateTime.Parse("whatever");
cmd1.Parameters.AddWithValue("@Activedate", SqlDbType.DateTime).Value = myDate ;