A comment on criticism by Carly Fiorina and Gordon Bethune.
The biggest challenge to Facebook right now is going mobile.
Effectively, Facebook is still in product development phase. It needs a war-time leader, a geek not a slick businessman.
The mobile app, mobile ecosystem industry is still growing without an emergence of a dominant giant. How many business CEO are there who are experienced to run a mobile company?
Mark would do well to take the advice of people who have done it before…
Which one is your favorite?
Over 4 years after I speculated that it was unlikely McDonald’s would come to Vietnam, the giant fast food chain visited Vietnam to explore opportunities.
McDonald’s will find itself competing with:
- Approximately 90 KFC stores
- Approximately 90 Lotteria stores
- Approximately 60 Pho 24 stores
- Approximately 22 Jollibee stores, which owns 50% Highlands Food which owns Pho 24
- Countless street food bread, sticky rice stalls and local noodle houses
This comes after Starbucks.
Photo credit: razzlyberry
"The market can stay irrational longer than you can stay solvent."
John Maynard Keynes
Lotteria has approximately 80 stores, higher bargain power with landlords, better brand recognition, arguably more experience in process.
Despite receiving investment, VietMac doesn’t seem to scale quickly enough.
The whole barrier to entry of VietMac is its product which is relatively easy to imitate, and it is.
* This pseudo-code class entails the risk and expected return values for efficient frontier
* In real code, accessors and mutators should be provided
float return; // series of expected returns on efficient portfolios
float risk; // series of standard deviation of returns of efficient portfolios
float gmvpReturn; // expected return of Global Minimum Variance Portfolio
float gmvpRisk; // standard deviation of returns of Global Minimum Variance Portfolio
float tangentReturn; // expected return of the efficient portfolio tangent to Capital Market Line
float tangentRisk; // standard deviation of returns of the efficient portfolio tangent to Capital Market Line
float shortConstraintMaxReturn; // maximum expected return that an efficient portfolio can reach
float shortConstraintMaxRisk; // standard deviation of returns of the efficient portfolio with maxmimum return
* This pseudo-code function produces position of Markowitz Efficient Frontier
EfficientFrontier getEfficientFrontier(float price)
const float c1 = 0.1; // first substitute of risk-free rate for Black's shortcut
const float c2 = 0.2; // second substitute of risk-free rate for Black's shortcut
float annualReturn = annualReturn(price);
float annualVarcovar = annualVarcovarMatrix(price);
annualVarcovar = InverseMatrix(annualVarcovar);
for (i = 0 ; i < NUMBER_OF_VARIABLES ; i++)
for (j = 0 ; j < NUMBER_OF_VARIABLES ; j++)
z1[i] += annualVarcovar[i][j] * (annualReturn[j] - c1);
sumz1 += z1[i];
x1[i] = z1[i] / sumz1;
// repeat for z2 & x2;
float expectedReturn1, expectedReturn2;
for (i = 0 ; i < NUMBER_OF_VARIABLES ; i++) // calculate expected return
expectedReturn1 += annualReturn[i] * x[i];
// repeat for expectedReturn2;
variance1 = z1 * annualVarcovar * z1; // this is a shorthand for tri-matrices multiplication. Actual code should extend the calculation of matrix multiplication
// repeat for variance2;
covariance = z1 * annualVarcovar * z2;
return = discreteReturn(price);
risk = stdDev(price);
for (i = 0 ; i < NUMBER_OF_OBSERVATIONS ; i++)
if (maxReturn < return[i]) maxReturn = return[i];
if (maxRisk < risk[i]) maxRisk = risk[i];
// the maximum return and standard deviation here are not exactly value due to limitation of the method
w2 = 1 - w1; // rebalance the two asset portfolio
EfficientFrontier.return[i] = w1 * expectedReturn1; // for demonstration only, a mutator should be used
EfficientFrontier.risk[i] = (w1^2 * variance1 + w2^2 * variance2 + 2 * w1 * w2 * covariance)^(1/2); // for demonstration only, a mutator should be used
w1 += INCREMENT;
while(EfficientFrontier.return[i] <= maxReturn); // for demonstration only, an accessor should be used
* Global Minimum Variance Portfolio
gmvpWeight1 = (variance2 - covariance) / (variance1 + variance2 + 2 *
covariance); // Bodie Kane Marcus Investments 8e page 204
gmvpWeight2 = 1 - gmvpWeight1;
EfficientFrontier.gmvpReturn = gmvpWeight1 * expectedReturn1 +
gmvpWeight2 * expectedReturn2;
EfficientFrontier.gmvpRisk = (gmvpWeight1^2 * variance1 + gmvpWeight2^2 *
variance2 + 2 * gmvpWeight1 * gmvpWeight2 * covariance)^(1/2);
// Bodie Kane Marcus Investments 8e page 207
tangentWeight2 = 1 - tangentWeight1;
EfficientFrontier.gmvpReturn = tangentWeight1 * expectedReturn1 +
tangentWeight2 * expectedReturn2;
EfficientFrontier.gmvpRisk = (tangentWeight1^2 * variance1 +
tangentWeight2^2 * variance2 + 2 * tangentWeight1 * tangentWeight2 * covariance)^