Securities exchange micro-structure part 1 - NYSE, NASDAQ, CBOE, LSE, EuroNext, ASX

By Tai, August 14, 2010 11:29 am

Tweet this post and Share and

NYSE: order-driven. NASDAQ: quote-driven. LSE: quote-driven. ASX: order-driven.

NYSE faster for market orders. NASDAQ is faster overall (25 seconds). NYSE slower (50 seconds) because of manual execution & auction.

Liquidity

Liquidity has U-shape pattern: high at open and close. Trade while liquidity is high. Prices are more informative in liquid parcels.

NYSE orders are consolidated. NASDAQ orders are fragmented because NASDAQ has different trading locations.

Switch from NASDAQ to NYSE: liquidity & price efficiency improved, volatility reduced. Consolidation is more valuable for less liquid stocks.

Spreads

NASDAQ: spreads are stable through out the day but narrow near close.

NASDAQ spreads remain constant during first hour. NYSE spreads decline.

NASDAQ spreads narrow near close, NYSE spreads widen near close.

CBOE options: spread high at open, narrows after open, lowest at close.

NYSE: reversed-J spread shape.

Inverse relationship between spreads and activity. Relationship between risk and spreads. Relationship between spreads and information coming to market. Inverse relationship between spreads and competition.

Switch from NASDAQ to NYSE: quoted spreads & effective spreads decrease.

Institutional Trading

70% trading volume on NYSE is by member firms & institutional investors.

Large block institutional sale: perceived as liquidity motivation. Block purchase: perceived as containing favorable information, especially for small stocks.

Seller-initiated: down then slightly up, price effect is temporary. Buy-initiated: up then slightly down, price effect is permanent.

Seller-initiated: price reaches equilibrium after 3 trades, most adjustments in the first trade. Buy-initiated: equilibrium after 1 trade.

Downticks: price effect is largely permanent. Upticks: permanent price effect dominates.

Brokers do short to accommodate block purchase.

Anonymity

Spreads decline. Aggressiveness decline. Orderbook depth increases.

Limit order traders are more willing to expose under anonymity.

Anonymity attracts order flow from non-anonymous markets, but only for large stocks.

Anonymity has few benefits to inactive stocks, and higher benefits in presence of information asymmetry.

Increase in spreads foreshadows increase in volatility.

Positive relationship between spreads in one parcel and magnitude of price change in the subsequent.

Exchanges in fragmented markets should consider anonymous trading to improve price competition and liquidity.

Bibliography

Bennett & Wei, 2006, Market structure, fragmentation, and market quality

Admati & Pfleiderer, 1998, A theory of intraday patterns: volume and price variability

Chan, Christie & Schultz, 1995, Market structure and the intraday pattern of bid-ask spread for NASDAQ securities

Chan, Chung & Johnson, 1995, The intraday behavior of bid-ask spreads for NYSE stocks and CBOE options

Chan & Lakonishok, 1992, Institutional trades and intraday stock price behavior

Comerton-Forde & Tang, 2009, Anonymity, liquidity and fragmentation

Foucault, Moinas & Theissen, 2005, Does anonymity matter in electronic limit order markets?

Holthausen & Leftwich, 1987, The effect of large block transactions on security prices

Holthausen, Leftwich & Mayers, 1990, Large-block transactions, the speed of response, and temporary and permanent stock-price effect

McInish & Wood, 1992, An analysis of intraday patterns in bid/ask spreads for NYSE stocks


Connect to me:

  1. Follow me on Twitter: @taitran
  2. Connect to me on Facebook: taitran.com/facebook
  3. Connect to me on LinkedIn: linkedin.com/in/taitran
  4. Follow me on LinkHay (Vietnamese): linkhay/u/TaiTran

Enjoyed this entry? Register to receive FREE updates via email

Enter your email address:

Delivered by FeedBurner

IESE Global Venture Capital & Private Equity Country Attractiveness Index

By Tai, August 12, 2010 9:36 pm

Tweet this post and Share and

UNSW FINS5523 Alternative Asset Classes Venture Capital Private Equity Global Index IESE

Prof. Alexander Groh and Prof. Heinrich Liechtenstein, together with a group of researchers from IESE’s International Center for Financial Research (CIIF) and support from Ernst & Young and DLA Piper Weiss-Tessbach, have rated the varying levels of “attractiveness” of global countries for venture capitalists and private equity investors.

The index sources from over 150 databases.

Key indicators of VC/PE attractiveness include:

  1. Economic Activities
  2. Taxation
  3. Entrepreneurship Culture and Opportunities
  4. Human and Social Environment
  5. Depth of Capital Market
  6. Investor Protection and Corporate Governance

The index can be viewed at VC/PE Index IESE

Venture Capital and Private Equity are also taught at University of New South Wales at postgraduate level.


Connect to me:

  1. Follow me on Twitter: @taitran
  2. Connect to me on Facebook: taitran.com/facebook
  3. Connect to me on LinkedIn: linkedin.com/in/taitran
  4. Follow me on LinkHay (Vietnamese): linkhay/u/TaiTran

Enjoyed this entry? Register to receive FREE updates via email

Enter your email address:

Delivered by FeedBurner

Code for Markowitz Efficient Frontier Calculation using Black’s Shortcut

Tweet this post and Share and


#include < www.taitran.com/blog/pseudo-codes-for-basic-finance-value-calculations.html >

// This pseudo-code class entails the risk and expected return values for efficient frontier. In real code, accessors and mutators should be provided
class EfficientFrontier()
{
	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 elaborate 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];
	}

	do
	{
		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;
		i++;
	}
	while(EfficientFrontier.return[i] <= maxReturn);	// for demonstration only, an accessor should be used

	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);

	tangentWeight1=(expectedExcessReturn1*variance2-expectedExcessReturn1*covariance)/(expectedExcessReturn1*variance2+expectedExcessReturn2*variance1-(expectedExcessReturn1+expectedExcessReturn2)*covariance);
	// 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)^(1/2);

	return EfficientFrontier;
}


Connect to me:

  1. Follow me on Twitter: @taitran
  2. Connect to me on Facebook: taitran.com/facebook
  3. Connect to me on LinkedIn: linkedin.com/in/taitran
  4. Follow me on LinkHay (Vietnamese): linkhay/u/TaiTran

Enjoyed this entry? Register to receive FREE updates via email

Enter your email address:

Delivered by FeedBurner

Pseudo-codes for basic Finance value calculations

Tweet this post and Share and

// value can either be return or price

// this pseudo-code function calculates the mean of value observations
float[] average(float[] value)
{
	for (i = 0 ; i < NUMBER_OF_OBSERVATIONS ; i++)	sum += value[i];
	return (sum / NUMBER_OF_OBSERVATIONS);
}

// this pseudo-code function calculates the mean of value observations with probability
float[] average(float[] value, float[] probability)
{
	for (i = 0 ; i < NUMBER_OF_OBSERVATIONS ; i++)	average += value[i] * probablity[i];
	return average;
}

// this pseudo-code function calculates discrete return from price observations
float[] discreteReturn(float[] price)
{
	discreteReturn[0] = 0;
	for (i = 1 ; i < NUMBER_OF_OBSERVATIONS ; i++)	discreteReturn[i] = price[i] / price[i-1] - 1;
	return discreteReturn;
}

// this pseudo-code function calculates excess return from price observations
float[] excessReturn(float[] price)
{
	average = average(price);
	for (i = 1 ; i < NUMBER_OF_OBSERVATIONS ; i++)	excessReturn[i] = price[i] / price[i-1] - 1 - average;
	return excessReturn;
}

// this pseudo-code function calculates variance from value observations
float[] variance(float[] value, float[] probability)
{
	average = average(value, probability);
	for (i = 0 ; i < NUMBER_OF_ELEMENTS ; i++)	variance += probability[i] * (value[i] - average)^2;
	return variance;
}

// this pseudo-code function calculates annualized variance from value observations
float[] annualVariance(float[] value, float[] probability)
{
	return variance(value, probability) * NUMBER_OF_OBSERVATIONS / NUMBER_OF_YEAR;
}

// this pseudo-code function calculates standard deviation from value observations
float[] stdDev(float[] value, float[] probability)
{
	return variance(value, probability)^(1/2);
}

// this pseudo-code function calculates annualized standard deviation from value observations
float[] annualStdDev(float[] value, float[] probability)
{
	return annualVariance(value, probability)^(1/2);
}

// this pseudo-code function calculates covariance from two sets of values
float[] variance(float[] value1, float[] value2)
{
	average1 = average(value1);
	average2 = average(value2);
	for (i = 0 ; i < NUMBER_OF_ELEMENTS ; i++)	covariance += (value1[i] - average1) * (value2[i] - average2);
	return covariance;
}

/*
 * this pseudo-code function calculates variance-covariance matrix from multiple values
 * value[][] is in the format value[number of observations][number of variables]
 */
float[][] varcovarMatrix(float[][] value)
{
	for (i = 0 ; i < NUMBER_OF_VARIABLES ; i++)
	{
		for (j = 0 ; j < NUMBER_OF_VARIABLES ; j++)
		{
			varcovar[i][j] = covariance(value[][i], value[][j]);	// only takes the vertical array
		}
	}
	return varcovar;
}

// this pseudo-code function calculates annualized variance-covariance matrix from multiple values
float[][] annualVarcovarMatrix(float[][] value)
{
	varcovar = varcovarMatrix(value);
	for (i = 0 ; i < NUMBER_OF_VARIABLES ; i++)
	{
		for (j = 0 ; j < NUMBER_OF_VARIABLES ; j++)
		{
			varcovar[i][j] = varcovar * NUMBER_OF_TRADING_DAYS / NUMBER_OF_YEARS;
		}
	}
	return varcovar;
}

// this pseudo-code function calculates correlation matrix from multiple values
float[][] corrMatrix(float[][] value)
{
	varcovar[][] = varcovarMatrix(value);
	for (i = 0 ; i < NUMBER_OF_VARIABLES ; i++)
	{
		for (j = 0 ; j < NUMBER_OF_VARIABLES ; j++)
		{
			corr[i][j] = covariance(value[][i], value[][j]) * stdDev(value[][i]) * stdDev(value[][j]);
		}
	}
	return corr;
}


Connect to me:

  1. Follow me on Twitter: @taitran
  2. Connect to me on Facebook: taitran.com/facebook
  3. Connect to me on LinkedIn: linkedin.com/in/taitran
  4. Follow me on LinkHay (Vietnamese): linkhay/u/TaiTran

Enjoyed this entry? Register to receive FREE updates via email

Enter your email address:

Delivered by FeedBurner

FINS3640 - Semester 2 2010 - Week 5 & 6 Preparation

Tweet this post and Share and

Dear Students,

In week 5 we will continue with modeling using Stata. Please come with questions and data sets.

In week 6 we will move on to extending your knowledge of portfolio management. I’d advise you to review your FINS2624 and FINS1613 knowledge. Specifically, here are a few things you should have been familiar with:

  1. Discrete return, excess return, continuous return calculation
  2. Arithmetic return and geometric return calculation
  3. Asset classes
  4. Standard deviation, variance, covariance, correlation calculation. Variance-covariance matrix, correlation matrix
  5. Annualised values
  6. Nominal rate
  7. Single-index model
  8. CAPM
  9. Efficient frontier with and without short-sale
  10. CML
  11. SML
  12. Utility function
  13. Fixed income term structure: market expectation, liquidity premium
  14. Fixed income duration, convexity
  15. Equity and fixed income valuation models
  16. Active and passive portfolio management
  17. Efficient market hypothesis

You need to have Simon Benninga Financial Modeling 3rd edition. Bodie Kane Marcus Investment 8th edition is highly recommended.

Regards,

Tai


Connect to me:

  1. Follow me on Twitter: @taitran
  2. Connect to me on Facebook: taitran.com/facebook
  3. Connect to me on LinkedIn: linkedin.com/in/taitran
  4. Follow me on LinkHay (Vietnamese): linkhay/u/TaiTran

Enjoyed this entry? Register to receive FREE updates via email

Enter your email address:

Delivered by FeedBurner

Page 3 of 79«12345678910»...Last »

Panorama theme by Themocracy