Let's have a look the result of calculating European call option's price. It's ok.
In[24]:= FinancialDerivative[{"European",
"Call"}, {"StrikePrice" -> 120,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03,
"Volatility" -> 1, "CurrentPrice" -> 100}]/10
FinancialDerivative[{"European", "Call"}, {"StrikePrice" -> 12,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03, "Volatility" -> 1,
"CurrentPrice" -> 10}]
FinancialDerivative[{"European", "Call"}, {"StrikePrice" -> 1.2,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03,
"Volatility" -> 1, "CurrentPrice" -> 1}]*10
Out[24]= 0.5031037392
Out[25]= 0.5031037392
Out[26]= 0.5031037392
Then, get the price of American call option.
In[21]:= FinancialDerivative[{"American",
"Call"}, {"StrikePrice" -> 120,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03,
"Volatility" -> 1, "CurrentPrice" -> 100}]/10
FinancialDerivative[{"American", "Call"}, {"StrikePrice" -> 12,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03, "Volatility" -> 1,
"CurrentPrice" -> 10}]
FinancialDerivative[{"American", "Call"}, {"StrikePrice" -> 1.2,
"Expiration" -> 30/365}, {"InterestRate" -> 0.03,
"Volatility" -> 1, "CurrentPrice" -> 1}]*10
Out[21]= 0.4931626981
Out[22]= 0.4931626981
Out[23]= 0.2970486202
I have two question: 1. To my knowledge, the of price of an American call option is larger than a same European call option. But the above results aren't consistent with my knowledge. 2. The price of an American call option with strike price of 12 and current price of 10 should be 10 times of an American call option with strike price of 1.2 and current price of 1.0. The price of the above sixth option should be incorrect.