Whitney Tilson

Whitney Tilson

Whitney Tilson
Residence New York, NY
Nationality United States
Alma mater Harvard College
Harvard Business School
Occupation Investor, Writer/Author,

Whitney Tilson (born 1966) is an American investor,[1] author, and philanthropist. A disciple of the Graham-Dodd-Buffett-Munger school of value investing, he manages Kase Capital (formerly T2 Partners LLC), which consists of three value-oriented hedge funds. Tilson co-authored the books, The Art of Value Investing: How the World's Best Investors Beat the Market (published in May 2013) and More Mortgage Meltdown: 6 Ways to Profit in These Bad Times (published in May 2009), has written for Forbes, the Financial Times, Kiplinger’s, The Motley Fool and TheStreet.com, and was one of the authors of Poor Charlie's Almanack (ISBN 1578645018), the definitive book on Berkshire Hathaway Vice Chairman Charlie Munger. He is a CNBC contributor,[2] was featured in a 60 Minutes segment in December 2008 about the housing crisis that won an Emmy Award, was one of five investors included in SmartMoney Magazine’s 2006 Power 30, was named by Institutional Investor in 2007 as one of 20 Rising Stars. He has repeatedly appeared as a guest on Bloomberg TV and Fox Business Network, and was on the cover of the July 2007 Kiplingers. He has been profiled by the Wall Street Journal and theWashington Post. Tilson speaks on value investing and behavioral finance and co-founded the Value Investing Congress,[3] a biannual investment conference in New York City and Las Vegas, and Value Investor Insight,[4] an investment newsletter, which he is now looking to sell.

Background

Tilson was born in New Haven, Connecticut in 1966 and spent much of his childhood in Tanzania and Nicaragua (his parents are both educators, were among the first couples to meet and marry in the Peace Corps, and have retired in Kenya). He attended Bing Nursery School while his father worked toward his doctorate in education at Stanford, and was one of the children that took part in the famous Stanford marshmallow experiment (also see: Don't! The Secret of Self Control).

In 1985 he graduated from Northfield Mt. Hermon School, where his father was Academic Dean, and then graduated magna cum laude from Harvard College with a bachelor's degree in Government in 1989. After college, Tilson helped Wendy Kopp launch Teach for America and then spent two years as a consultant at The Boston Consulting Group. He earned an MBA with High Distinction from Harvard Business School in 1994, where he was elected a Baker Scholar (top 5% of class).[5]

Value Investing Congress

In 2004, Tilson partnered with John Schwartz to create the Value Investing Congress which has become the premier event for value investors to attend, and dubbed the, "Superbowl of Value Investing" by CNBC. Presenters at the congress have regularly broken news and moved stocks: In October 2010, David Einhorn presented St. Joe Corporation as a short idea and sent the stock down 10% on the day that he spoke:.[6] Einhorn did the same in October 2011 when he presented Green Mountain Coffee Roasters as a short idea. Other notable speakers at the Congress have included: William Ackman, Leon Cooperman, Julian Robertson, and Mohnish Pabrai.

Google

When Google had its IPO in 2004, Tilson famously said in 2004 Motley Fool article, "Google with the same market cap of McDonald's (a stock I own)?! HA! I believe that it is virtually certain that Google's stock will be highly disappointing to investors foolish enough to participate in its overhyped offering -- you can hold me to that."[7] Note: Since then (as of 10/18/13) Google has gone on to give its investors over a 1050% return.

Education reform activities

Tilson is involved with a number of charities focused on education reform and Africa. For his philanthropic work, he received the 2008 John C. Whitehead Social Enterprise Award from the Knowledge is Power Program (KIPP), Academy Charter Schools in NYC and the National Alliance for Public Charter Schools. He is also one of the founders of Democrats for Education Reform, which aims to move the Democratic Party to embrace genuine school reform.

In 2010, Tilson was featured in an education reform documentary film, A Right Denied: The Critical Need for Education Reform].[8] In the film Tilson explores the twin achievement gaps (between the U.S. and its economic competitors, and between low-income, minority students in the US and their wealthier peers) and forcefully advocates for an urgent school reform agenda.

Published books

More Mortgage Meltdown: 6 Ways to Profit in These Bad Times (John Wiley & Sons, 2009) ISBN 0-470-50340-8
Poor Charlie's Almanack (ISBN 1578645018)

References


-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p
  1. ^
  2. ^ [1]
  3. ^ [2]
  4. ^ [3]
  5. ^ http://seekingalpha.com/author/whitney-tilson
  6. ^
  7. ^
  8. ^ [4]

External links

  • Official website
  • "Jacob Wolinsky Interviews Value Investor Whitney Tilson," Gurufocus.com, March 1, 2010
  • Film site for "A Right Denied..."
  • Initiative for a Competitive Inner City