If the annual gain is 30% (it's not as mentioned by others since ROE is not the same as stock price gain) then after 20 years $10k would grow to $1.9M not $3.7M. You were looking at monthly compounding. Monthly compounding is what you'd use for most loans or earnings on deposit accounts, but if you've derived an annual rate of return for a stock and apply it to future growth you'd want to use annual compounding. You'd use annual compounding because the growth rate you derived was an annual growth rate. You derived 30% growth per year, which means after 1 year you'd have $3,000 in growth on $10,000 with annual compounding. The formula is:
Amount = Principal(1+rate/compounding periods per year)^compounding periods per year*years
So annual compounding for 1 year:
A = 10,000(1+0.30/1)^1*1
A = 10,000(1.3)^1
A = 13,000 ($3,000 growth)
Monthly compounding for 1 year would be:
A = 10,000(1+0.30/12)^12*1
A = 10,000(1.025)^12
A = 13,448 ($3,448 growth)
You know the latter isn't correct, because $3,448/$10,000 = 34.48% growth and you derived an annual return of 30%. As you can see over 20 years that is a very significant difference. When evaluating financial products with a set interest rate, compounding period could vary and you'll need to assess, but when looking at an 'annual return' and applying it to future growth you have to also use annual compounding else you won't actually be using the annual return rate that you intended to.
Also mentioned by others is the fact that this rate of return is unsustainable, but ignoring that, the compounding period was also a flaw in your assessment.