Improving my code of Margrabe Formula in Python
First of all, when you compare to None, you are better off using if stock1 is None: - an object can define equality, so potentially using == could return True even when stock1 is not None. Using is checks identity, so it will only return True in the case it really is None.

As to simplifying your code, you can simply place the default values directly into the function definition:

def margrabe(stock1=s1, stock2=s2, sig1=t, sig2=sigma1, time=sigma2, corr=rho):
    dd1 = d1(stock1, stock2, time, sig1, sig2, corr)
    dd2 = d2(stock1, stock2, time, sig1, sig2, corr)
    return stock1*norm.cdf(dd1) - stock2*norm.cdf(dd2)


This makes your code significantly more readable, and much shorter.

It is also worth a note that CapWords is reserved for classes in Python - for functions, use lowercase_with_underscores - this is defined in PEP-8 (which is a great read for making your Python more readable), and helps code highlighters work better, and your code more readable.