Sunday, June 23, 2019

Vanguard's Two-Fund Portfolio Just Had Its Best Decade

Here is the link.

I like to highlight those terms I should learn, and also I like to learn how to read financial article like this.

If it feels like diversifying beyond a simple moderate portfolio that owns one U.S. stock index fund and one U.S. bond index fund has been a fool's errand over the past decade, there's good reason for that. Vanguard Balanced Index had its best decade of risk-adjusted returns since it launched in 1992, and it invests in just two broad U.S. index funds. To be fair, seven of the 153 funds in the allocation--50% to 70% equity Morningstar Category had as good or slightly better risk-adjusted returns over the decade, so there was some room for improvement, but it has still been a fantastic time for simplicity.

Vanguard Balanced Index is a moderate-allocation fund that earns a Morningstar Analyst Rating of Gold. It uses 60% of its assets to track the same index that underlies Gold-rated Vanguard Total Stock Market Index and 40% of its assets to track the same index underlying Silver-rated Vanguard Total Bond Market Index.

To measure how great the past decade has been for the fund, we looked at rolling 10-year returns, volatility, and risk-adjusted returns since December 1992, its first full month of returns.

The results showed that the portfolio's 10-year annualized returns of 10.79% over the period ended April 30, 2019, were the third-best out of the 198 rolling 10-year periods we looked at (the best was the 11.69% annualized return for the period ended Feb. 28, 2019, so apologies to readers for being two months late on catching this phenomenon). Not only were the returns in the top 1% of the periods we looked at, but the portfolio's 7.61% annualized standard deviation (a measure of volatility) was the lowest out of the 198 periods (on that front, our timing worked out pretty well!).

Putting those risk and return characteristics together, not only has it been one of the most profitable times for this two-fund portfolio, it's also been the smoothest ride to get there. This translates directly to the fund's risk-adjusted returns, as measured by Sharpe ratio, also being in the top 1% of periods we looked at.

Exhibit 1 shows how the most recent 10-year returns, standard deviation, and Sharpe ratio rank compared with all periods and the average over those periods.



Setting Expectations Going Forward

How long can the good times last? It seems unlikely that the portfolio's unusually smooth ride will continue for the next 10 years, although its volatility can easily stay well below its long-term average for an extended period. Over the past 12 months, however, the fund's standard deviation has already been showing signs of reverting to the mean as macro factors like the U.S.-China trade war and the level of U.S. interest rates have led to increased market volatility. The fund's standard deviation for the 12-months ended April 30, was 10.31%, about one-third higher than it was over the trailing 10-year period.

For its part, Vanguard is also forecasting a return to the mean for the fund's volatility over the next decade. In Vanguard's 2019 economic and market outlook, it forecasts future a median volatility of 16.3% for U.S. equities and 5.3% for U.S. bonds. If the correlation of U.S. stocks and bonds stays near zero, which it was over the previous 10 years, that would translate to annualized volatility of about 9.69% over the next decade for this fund, which is basically equal to the average over all the rolling 10-year periods since the fund launched.

While investors should at least be prepared for higher volatility from the fund going forward, return expectations should also be moderated. Stocks' elevated valuations in the United States after their blistering decade of performance point toward lower expected future returns. The Vanguard Capital Markets Model projects U.S stocks to return between 3% and 5% annualized and U.S. bonds to return between 3% and 4% annualized. If the median range of those forecasts is correct, that would translate to annualized returns of about 3.8% for the fund going forward.

Of course, these are just educated estimates and no one, not even Vanguard, expects to hit their 10-year estimates on the nose. Still, it seems likely the fund's volatility will be higher over the next decade and that returns will be lower. Simple mean reversion points in this direction. Keeping moderated expectations in mind should help investors stick to the strategy over the long term as it is still one of the best passive allocation funds, in our view. After all, the higher volatility and lower returns in U.S. equities and bonds aren't a unique headwind for this fund compared with its peers, which also invest in the same asset classes. Its low costs and thoughtfully designed portfolio of U.S stocks and high-quality bonds should keep it ahead of most rivals, even with more-difficult markets going forward.

The Next Best Alternative?

Investors concerned about lower returns and higher volatility coming from U.S. allocation funds do have a solid alternative in Vanguard LifeStrategy Moderate Growth. It also earns a Gold rating and has a similar risk profile to Vanguard Balanced Index. Vanguard LifeStrategy Moderate Growth invests in the total U.S. stock and bond markets, too, but it distinguishes itself from its sibling through a significant allocation to international stocks and bonds. It allocates 24% of its portfolio to Gold-rated Vanguard Total International Stock Index and 11% to Silver-rated Vanguard Total International Bond Index. That puts its allocation in line with Vanguard's Target Retirement Series, which dedicates 40% of its equity exposure and 20% of its fixed-income exposure to international securities throughout the glide path. The target-date series reflects the firm's best asset-allocation thinking for long-term investing.

The Vanguard Capital Markets Model also paints a rosier picture for more globally diversified portfolios going forward. The model's base case for a globally diversified 60/40 fund over the next decade is 4.9% returns with roughly similar volatility as a U.S.-only 60/40 portfolio. That's still lower returns than a global 60/40 would have returned over the previous decade, but it's potentially more upside without more risk.

Conclusion

Vanguard Balanced Index has had a unique trailing decade of top-decile returns and bottom-decile risk compared with its history. Going forward, both returns and risk are likely to revert closer to their long-term averages. That translates into lower returns and higher risk. The fund remains a standout option in its category, but investors looking for an alternative may find an intriguing option in the more globally diversified Vanguard LifeStrategy Moderate Growth.


How to Choose a Beneficiary

Here is the link.


SQL Server 2019 Big Data Clusters Architecture | Buck Woody | Modernizing Your Data Platform

Here is the link.


PASS Marathon: Modernizing Your Data Platform

Here is the link.




Case study: Key large portfolio cost basis - first report

June 23, 2019

Introduction


It is time for me to explore all features inside TD Ameritrade. Today I came cross another new feature called cost basis. I like to learn the basics first, even though it is so quick to see portfolio valuation up more than 2% in less than a month.

Cost basis


Here is my cost basis for portfolio. I have to manage better my portfolio this time.


All transactions are included. 



A Facebook exec breaks down the 2 biggest misconceptions about landing a job at the tech giant

Here is the link.

"We really focus on hiring for skills as opposed to experience," Gale said. "We're trying to find the people who are doing interesting things no matter where they are."

Instead, he advised focusing on honing your passion and mastering your chosen field.
"If you just focus on that and you become really, really great at it and kind of build a reputation, then I think you're going to have a great chance at landing somewhere like Facebook," he said. "It boils down to being super passionate about what you do, whether it's software engineering or hardware engineering."
Kalinowski adds that it's important for more senior candidates to have specialized skills.

"I don't want to hire an entire team of perfectly well-rounded engineers who can all do the same stuff equally well," she said. "My personal philosophy, which dovetails nicely with the Facebook philosophy, is, I want high points. I'm looking for someone who's shown a particular skill in a certain area."

A Facebook exec explains why she doesn't hire 'the smartest person in the room' — and the questions she asks to weed them out

Here is the link.

• Facebook employees succeed if they have a drive to learn, according toVP of HR Janelle Gale.
• When she's interviewing candidates, she's typically less impressed with people who already consider themselves to be the "smartest person in the room."
• Rather, she's looking for individuals who display intellectual curiosity.


Facebook employees are learners. That's why the most important trait VP of HR Janelle Gale looks for in job candidates is curiosity.
"We look for learners, people who are acquainted to learning fast, are intellectually curious, and constantly looking to expand their knowledge," she told Business Insider. "They're actively seeking feedback and they're open to it."
And, as with any company, hiring the right people is crucial to helping Facebook maintain its culture.

"There's just so much to learn here, no matter if you're an entry level college graduate or if you're top in your field," she said. "Cockiness does not work."
So how does Facebook weed out the know-it-alls? Gale said she'll often ask follow-up questions about projects the individual has worked on, like "What would you have done differently?" or "What did you learn in the process?"
"If someone hesitates for a really long time and can't come up with an answer, or if they spin it so that what they learned actually makes them look good, that tells me that they are closed off to learning," she said.
What she wants from the candidate is a level of vulnerability and reflection, as well as a strong demonstration of intellectual curiosity.

How Facebook decides how much you'll make working there

Here is the article.

"Compensation fairness is a very, very important thing for us," Facebook VP of HR Janelle Gale told Business Insider. "We spend a lot of time making sure it's a very tight system."

How worker pay compares at Facebook, Google, Amazon

Here is the link.

Facebook

Median compensation: $240,430
CEO Mark Zuckerberg's pay: $8,852,366
Note: Zuckerberg's base pay was just $1, but Faceboo (FB)spent nearly $9 million on his security and private planes. Business Insider reported earlier this year that rank-and-file employees don't negotiate their salaries to ensure fairness. Glassdoor recently named Facebook 2018's best place to work.
(Figures according to an April 13 public filing.)

Why I quit Amazon just 5 months after I’ve started


Here is the link.

I like to take some notes from the article. I need to figure out how to take calculated risk. Big risk is not to take enough risk.

Facts:

Time to prepare for online assessment
Time to prepare for onsite
Whiteboard interview
SDE I title -
Negotiation the offer - 30% more

One thing is missing - evaluate the risk of turnover rate first six months, it is very challenge to work there the first two years. Prepare for the worst.

The offer does not matter that much.

Focus on middle term or long term return. Like investment on stock market, invest on USA economy, grow with USA economy. Make a balanced portfolio.






6 reasons why i love being a software engineer

Here is the link.

I also like to write 6 reasons why I love being a software engineer. But first I like to learn from Mayuko how she presents good content, and also she makes things look so easy.




mayuko

How to end the day to prepare for online code assessment?

I choose to study some coaching video. I found one, now it is 12:14 AM. Here is the link.


310. Minimum Height Trees

This graph algorithm is so interesting. I like to learn from so many good posts on Leetcode.com.


Saturday, June 22, 2019

207. Course Schedule - study code

Here is the post I like to learn from. The diagram the author shared are so clear and it is really a good example for me to learn from.


207. Course Schedule - study code

Here is the code I like to study. I like to improve my C# code by studying from the player - he is my favorite role model on leetcode.com.



684 redundant connection

June 22, 2019

It is time for me to review all graph algorithms and then I can quickly prepare myself better for online code assessment.

A new post


I like to practice a few more times on this algorithm. So it is better for me to create a post first, and add my practice one by one.

My two practices are shared in the following:

C# solution using union find algorithm implemented using array, here is the link.
C# solution using disjoint set algorithm to solve using Dictionary<Int, HashSet<int>>, here is the link.

Watch how I approach Hard Interview Questions from Scratch

Here is the link.


Abdul Bari

Here is the link of youtube channel.

I will spend 30 minutes first to watch some videos.




He Got A $277K Google Offer by Lying!

Here is the link.


How to Study for Coding Interview with Ex-Google Techlead

Here is the link.




210 course schedule II

Here is my discussion post.

It is challenge for me to master a graph algorithm. I plan to spend time to review my practice back in February, 2017 first. I like to share my practice and will work on new version very soon.
Case study example graph
Example 2:
Input: 4, [[1,0],[2,0],[3,1],[3,2]]
Output: [0,1,2,3] or [0,2,1,3]
In order to understand graph, how to apply topological sort, we have to understand the dependency stored in the array, [1,0] tells us that course 0 should be taken first then course 1 can be taken. likewise, we can interpret [2,0],[3,1],[3,2].
Let me draw the tree based on the above dependency, the graph can be very helpful to understand how to approach the problem using topological sorting; even if I forget the algorithm, I still can figure out the reasonable order based on those prerequisite courses.
image
The most challenge part is design decision. How to represent the graph using data structures? We can name the node using index = 0, 1, ...n, and each node ( course) has dependents; so the course can be prerequisite course for others, it can be stored in a stack, and then each course has indgree ( the concept is prerequisite courses) value.
So declaration statements are the following:
var dependents = new Stack[numCourses];
var indegree = new int[numCourses];
The output of courses taken in order is stored in integer array.
Build the graph by going over each entry in matrix.
Next step is to add those courses into queue with 0 indegree. Take those course first, and then update indegree for each course if related.
Here are highlights:
  1. Build a graph using selected data structures, indegree, dependency list;
  2. Start to do BFS search using Queue, add those indegree courses to the queue;
  3. Do not forget to update indegree count after the course is ready to take based on indegree value 0;
  4. Work on example graph if there is problem in thinking process. Be patient! Example graph, take course 0, next step take 1 or 2, and then take one from 1 or 2 if it is not taken before, and last step take course 3.
public class Solution {
    public int[] FindOrder(int numCourses, int[,] prerequisites) {
         var dependents = new Stack<int>[numCourses];

            for (int i = 0; i < numCourses; ++i)
            {
                dependents[i] = new Stack<int>();  
            }

            // build dependency list for each prerequisite course, 
            // and set up indegree variable for each courses matching with prerequisite courses' number.
            int[] indegree = new int[numCourses];
            for (int i = 0; i < prerequisites.GetLength(0); ++i)
            {
                int takeFirst = prerequisites[i, 1];
                int takeAfter = prerequisites[i, 0];

                dependents[takeFirst].Push(takeAfter); 
                ++indegree[takeAfter];             
            }

            // add those courses with 0 indegree to the queue
            Queue<int> queue = new Queue<int>();
            for (int courseId = 0; courseId < numCourses; ++courseId)
            {
                if (indegree[courseId] == 0)
                {
                    queue.Enqueue(courseId);
                }
            }

            // take courses with indgree zero only
            var coursesByTakingOrder = new int[numCourses];
            int count = 0;
            while (queue.Count > 0)
            {                   
                int readyToTake = queue.Dequeue();

                coursesByTakingOrder[count++] = readyToTake;   

                foreach (int courseId in dependents[readyToTake])
                {
                    // decrement value of indegree by 1 
                    indegree[courseId]--;

                    // add to the queue if there is no prerequisite left
                    if (indegree[courseId] == 0)   
                    {
                        queue.Enqueue(courseId);
                    }
                }
            }

            if (count != numCourses)
            {   
                return new int[]{}; 
            }

            return coursesByTakingOrder;
    }
}


133. Clone Graph - my practice in July 2018

June 22, 2019

Introduction


It is my personal opinion. I was afraid to write down the thinking process when I practiced last time back in July 2018. I understand that it is important to show how I approach a problem, why it is better to choose BFS instead of DFS, what is challenge problem to solve to clone a node.

My sharing


Here is my post to share written on June 22, 2019.

It is challenge to master a graph algorithm. I like to review my last practice back in July 2018; I think that I should spend some time to work on a case study on example graph, and then explain how it works based on breadth first search.
Here are highlights:
  1. Apply breadth first search in original graph;
  2. Build a hashmap to map any node in original graph and clone graph;
  3. To visit any neighbor node, if it is the first time to visit, then the node should be added to hashmap first, and also it should be added to queue to visit its neighbors in next level of BFS; otherwise update clone graph node and its neighbor node connection.
Case study example graph
June 22, 2019
I think that it is important for me to work on an example, and then write down every step if I have time, and then I can review the basics how to clone a node with neighbors using BFS.
The nodes 1 has two neighbors, node 2 and 4.
I like to explain how to clone the graph with node 1 with two neighbor nodes 2 and 4.
First visit node 1, and then create a new node for clone graph, assign value of node 1; And also add entry in hashmap to make node 1 and clone of node 1.
Go over all neighbors of node 1, node 2 and node 4; first visit node 2, and see if
hashmap has an entry for node 2 or not.
If there is no entry in hashmap for node 2, so create a new node in clone graph, copy the value of node 2, and then add map from node 2 to clone node of node 2; and also add clone neighbor relationship, and last, it is most important to visit neighbor by adding neighbor node to the queue.
The hashmap is also to serve visited look up, if the node is visited, then it should have an entry in hashmap.
If the neighbor node is visited, all we need to do is to add one more neighbor relationship.
Do not forget, search all nodes in the graph; always mark visit, avoid deadloop; Do not forget to clone neighbor relationship in clone graph as well.
The best way to review the graph algorithm is to draw a diagram to illustrate the steps in the clone process. I did quickly draw a diagram, which will be enhanced later.
image
/**
 * Definition for undirected graph.
 * public class UndirectedGraphNode {
 *     public int label;
 *     public IList<UndirectedGraphNode> neighbors;
 *     public UndirectedGraphNode(int x) { label = x; neighbors = new List<UndirectedGraphNode>(); }
 * };
 */
public class Solution {
    public UndirectedGraphNode CloneGraph(UndirectedGraphNode node)
        {
            if (node == null)
            {
                return null;
            }

            var queue = new Queue<UndirectedGraphNode>();
            var map   = new Dictionary<UndirectedGraphNode, UndirectedGraphNode>();

            var newHead = new UndirectedGraphNode(node.label);

            queue.Enqueue(node);
            map.Add(node, newHead);

            while (queue.Count > 0)
            {
                var curr = (UndirectedGraphNode)queue.Dequeue();

                var currNeighbors = curr.neighbors;

                foreach (UndirectedGraphNode neighbor in currNeighbors)
                {
                    if (!map.ContainsKey(neighbor))
                    {
                        var copy = new UndirectedGraphNode(neighbor.label);

                        map.Add(neighbor, copy);

                        map[curr].neighbors.Add(copy);

                        queue.Enqueue(neighbor);
                    }
                    else
                    {
                        map[curr].neighbors.Add(map[neighbor]);
                    }
                }
            }

            return newHead;
        }
}

133. Clone Graph - My first practice back in July 2016

Here is the discussion post I wrote today.

It is challenge to master the graph algorithm. What I do is to review all graph algorithms, and then review basics through my past practice.
Here are highlights of my practice back in July 2016.
  1. Clone a graph is similar to clone a tree; The traverse of a graph can be depth first search or breadth first search, each node should be copied, and then connected node should be keeped in clone graph as well;
  2. Design a hashmap to save the orginal node in graph with cloned graph; Start from any given node first;
  3. Choose breadth first search, since adjacent list should be went through and then each neighbor node should be cloned as well.
June 22, 2019
I think that I should work on a few things back in 2016. I should write some comment, and also I should learn some advanced C# feature, like using implicit type var to declare queue to save time.
/**
 * Definition for undirected graph.
 * public class UndirectedGraphNode {
 *     public int label;
 *     public IList<UndirectedGraphNode> neighbors;
 *     public UndirectedGraphNode(int x) { label = x; neighbors = new List<UndirectedGraphNode>(); }
 * };
 */
public class Solution {
    public UndirectedGraphNode CloneGraph(UndirectedGraphNode node) {
        if(node == null)
                return null;
 
            Queue<UndirectedGraphNode> queue = new Queue<UndirectedGraphNode>();
            Dictionary<UndirectedGraphNode, UndirectedGraphNode> map = 
                                   new Dictionary<UndirectedGraphNode,UndirectedGraphNode>();
 
            UndirectedGraphNode newHead = new UndirectedGraphNode(node.label);
 
            queue.Enqueue(node);
            map.Add(node, newHead);
 
            while(queue.Count > 0 ){
                UndirectedGraphNode curr = (UndirectedGraphNode)queue.Dequeue();                

                IList<UndirectedGraphNode> currNeighbors = curr.neighbors; 
 
                foreach (UndirectedGraphNode aNeighbor in currNeighbors){
                    if(!map.ContainsKey(aNeighbor)){
                        UndirectedGraphNode copy = new UndirectedGraphNode(aNeighbor.label);

                        map.Add(aNeighbor,copy);

                        map[curr].neighbors.Add(copy);

                        queue.Enqueue(aNeighbor);
                    }else{
                        map[curr].neighbors.Add(map[aNeighbor]);
                    }
                } 
            }

            return newHead;
    }
}


Graph problems

June 22, 2019

Introduction


It is time for me to go over some graph problems before I plan to take online code assessment. I need to learn how to master the graph problem, and also most important is to learn to write a simple graph solution using 90 minutes time range.

How to prepare 90 minutes online assessment for a graph problem?


It is better for me to read the second algorithm in the first 10 minutes, so I can prepare early for the second algorithm.

Next I should push myself to solve the first algorithm as quick as possible; Also I need to prepare for the second algorithm.

I like to go over 10 graph problems to warm up. Here are the graph problems on leetcode.com.


The Risk of Playing It Too Safe

Here is the link. My favorite personal finance director Christian Benz and her interview.

The risk you buy high and sell low.


Benz: So how do you coach clients, then, in a terrible market environment like '08 and early, '09 when everyone's wanting to move to cash, do you give into that tendency or how do you fight against that at a time like that?
Balasa: It's a varied answer to your question. Our clients looking back at that timeframe, if you let them go to 5% or 10% cash, it didn't make a big difference to the total return in the portfolio frankly, but psychologically, it was a huge release. They felt like they did something to preserve principal.
Benz: So saying stay put, we're not going to change anything doesn't cut it?
Balasa: After about five or six months of seeing staying put as the market is going down, they get really old. And so this was kind of an emotional release. But for most people, if you can step back and if you run projections, again, coming back to the idea of looking at numbers for yourself, if you see that I have a 150% of what I need and now the market is going down, I have a 110% of what I need. It gives you the ability to stay.
Now, if you've got 80% of what you need, and I have 60%, but then maybe you have to make some different decisions. But again, coming back and looking at the big picture is really helpful to keep that nervous investor in the market.


回答关于我的100个问题!

Here is the link.


10 things people learn too late

1. Everything is temporary
2. Life isn't fair
3. Family matters more than friends
4. Others treat you the way you treat yourself
5. Beneath anger there's always fear
6. Happiness is a choice and requires hard work
7. A lifetime isn't so long as you think
8. The biggest risk is not taking any risk
9. Things don't matter so much
10. You played it too safe

Warren Buffet

ryanscribenerofficial

90. Subsets II

Here is C# practice using recursive solution, I studied the code written by an Amazon engineer. 

It is important for me to learn how to write a simple recursive solution. Since my iterative solution takes me more than one hour to complete the code and testing.
I like to learn how to write a simple recursive solution, so I can solve it in less than 15 minutes. One thing I can do is to study code, and then write down how I understand the code.
public class Solution {
    /// <summary>
        /// June 22, 2019
        /// study code
        /// https://leetcode.com/problems/subsets-ii/discuss/30214/C-recursive
        /// The importance to learn to write a recursive function.
        /// I need to finish the code in less than 15 minutes. 
        /// I need to shorten the time to write a solution, recursive function is the first choice. 
        /// </summary>
        /// <param name="numbers"></param>
        /// <returns></returns>
        public  IList<IList<int>> SubsetsWithDup(int[] numbers)
        {
            // sets - good name? 
            var sets = new List<IList<int>>();

            Array.Sort(numbers);

            buildSubsets(numbers, sets, 0, new List<int>());

            return sets;
        }

        /// <summary>
        /// I need to learn how to write a recursive solution. 
        /// </summary>
        /// <param name="numbers"></param>
        /// <param name="sets"></param>
        /// <param name="index"></param>
        /// <param name="currentSet"></param>
        private void buildSubsets(int[] numbers, IList<IList<int>> sets, int index, List<int> currentSet)
        {
            sets.Add(currentSet);

            for (int i = index; i < numbers.Length; i++)
            {
                var current = numbers[i];

                var nextSet = new List<int>(currentSet); // copy the list

                nextSet.Add(current);

                buildSubsets(numbers, sets, i + 1, nextSet);

                // input list is sorted
                while (i < numbers.Length - 1 && numbers[i] == numbers[i + 1])
                {
                    i++;
                }
            }
        }
}

Top 10 Financial Habits of Warren Buffett

June 22, 2019

Introduction


It is my personal finance research. I like to learn more about 10 financial habits of Warren Buffett. Here is the article.

Habit #1: Stay Out of Debt and Save

  • Live below your income.
  • Save your money.
  • Avoid debt. Stay away from credit cards.

Habit #2: Read, Study, Learn

  • Read everything you can.
  • Understand business and accounting.
  • Learn everything you can about investing and potential investments before you invest.
  • Think through the investment process.
  • Research businesses and their histories.
  • Learn how to determine intrinsic value.
  • Set goals for yourself.
  • Emulate the best in every field of endeavor.
  • Learn from your mistakes.

Habit #3: Buy Businesses

Wealth is created and preserved through owning businesses. Begin investing early in life. Buying a business usually means buying shares of stock in a company. As a stockholder, you own a portion of the business. You should use the same criteria for deciding to buy a stock as you would use for deciding to buy the entire company. Before you buy shares in a company, consider whether you would buy the entire business. Invest in companies that you really like and that earn money. Use those earnings to buy more businesses.

Habit #4: Understand What You Own

Know and understand the businesses in which you own shares. Study and analyze what is going on inside the business, not what is going on in the outside markets. The business should be simple. Never invest in a business you cannot understand. You should be able to explain to an 8-year-old child in one or two sentences how the company makes a profit. You should know enough about an investment to be able to calculate its value.

Habit #5: Invest in Value

You should determine a business’ intrinsic value and buy it at a fair or bargain price. Look for companies with:
  • Above-average returns on equity, regardless of earnings per share
  • Sustainable earnings
  • Consistent operational history
  • Good four- or five-year averages, rather than just yearly results
  • High profit margins
  • Consumer products and brand names that enable the companies to raise their prices above the rate of inflation
  • Products such as food that are recession- and depression-proof
  • Barriers to outside competition
  • Good long-term prospects
  • Opportunities for future growth
  • Competent and honest management

Habit #6: Choose Well-Managed Businesses

Choose businesses that have rational and competent management. The management should be open and honest with shareholders. The management should resist the “institutional imperative,” which is the tendency to imitate other corporate managements, even when their behavior is irrational or dishonest. Nevertheless, the intrinsic quality of a business is more important than its management.

Habit #7: Invest for the Long Term

Maintain a focused, low-turnover portfolio. Always make the decision to buy a stock based on owning it for the long term. The best investments are companies that have low-capital requirements and products that people will always want to buy. Resist the urge to buy and sell investments. Inactivity is usually preferable to action. Invest for the long term, rather than constantly investing in broadly diverse prospects for the short term.

Habit #8: Maintain a Margin of Safety

Investment risk comes from being an unprepared, uninformed investor. Ensure a margin of safety with each of your investments. Your margin of safety comes from getting more intrinsic value than you are paying for when investing. Moreover, your margins of safety insulate you from mistakes in judgment and business cycles and unforeseen events. Investment risk can be also be greatly reduced by concentrating on only a few holdings.

Habit #9: Ignore the Stock Market

  • Judge a business by its fundamentals, not by short-term changes in its stock price.
  • Understand the difference between investments and speculation.
  • Avoid the speculative and emotional market forces.
  • Do not try to predict the direction of the stock market, interest rates, the economy or elections.
  • If you cannot watch your stock portfolio decline by 50% without panicking, you should not be investing in the stock market.

Habit #10: Give Back to Society

When you can afford it, donate some of your wealth to worthy causes and for the betterment of society. You can always contribute your time and effort to deserving charitable foundations and organizations. Mr. Buffet has donated around 85% of his wealth (over $37 billion in 2006) to help solve some of the major problems in the world.