I have several streams, which is really nice because you never know when one will dry up. I think I will be losing one of my contract optometry positions later this year. It sucks because I like the job, but it won’t be financial ruin. Even if you have a secure job, the side income does allow you to meet goals faster. I don’t think I’d ever go back to relying on one job, even if it was awesome.
A Risk Score of 10 means no risk. A Return Score of 1 means the returns are horrible compared to the risk-free rate. A Feasibility score of 10 means everybody can do it. A Liquidity Score of 1 means it’s very difficult to withdraw your money without a massive penalty. An Activity Score of 10 means you can kick back and do nothing to earn income. To make the ranking as realistic as possible, every score is relative to each other. Furthermore, the return criteria is based off trying to generate $10,000 a year in passive income.
One of the easiest ways to get exposure to dividend stocks is to buy ETFs like DVY, VYM, and NOBL or index funds. You can also pay an algorithmic advisor like Wealthfront to automatically invest your money for you at a low fee. In the long run, it is very hard to outperform any index, therefore, the key is to pay the lowest fees possible while being invested in the market. Wealthfront charges $0 in fees for the first $15,000 and only 0.25% for any money over $10,000. Invest your idle money cheaply, instead of letting it lose purchasing power due to inflation. The key is to invest regularly.
I was just curious what your thought was on actively managing your properties vs. getting a property manager? I recently started using a property manager and it has been a wonderful experience. It’s like there is now complete radio silence from the property since everything goes through the manager. I used to spend tons of time driving to it and showing it to prospective renters, doing background checks, doing maintenance, etc. It was amazing how much of a drain it was just thinking about what might go wrong. Now with a property manager I just get a .pdf statement in my e-mail and the rent gets deposited in my account like magic! I’m a big fan of property managers and think they are worth twice what I pay them.
The other point is that it is pretty easy to get started.  You don’t need to be super rich, and you don’t need a lot of time to get started.  To say it requires no time would be a lie, but you don’t need to make anything listed above your life.  You can work at your job, invest your excess income, save to buy a rental property or rent out a room in your current house, and you start a side job online without breaking a sweat.
5. Make sure you are properly diversified. Capital preservation is underrated. We saw a lost decade for tech stocks between 2000 and 2010 after the first dot-com bubble burst. It actually took 13 years for Nasdaq investors to get back to even. Investors in the Borsa Istanbul stock market index just gave up 10 years' worth of gains after they saw a plunge in their currency, partially due to increased tariffs by the US and a lack of confidence in the government. Your passive income needs to be properly diversified in order to take the hits.
Thanks for the info…I kind of figured it is really not that expensive to live if you are not an extravagant person. I could definitely figure out how to funnel expenses through a part time business…I think I keep thinking along the lines that I’m going to be paying the same tax rate after retirement, but reality is you could get pretty lean and mean if one focused on it. On a scale of 1-10 with 10 being utter panic mode, how worried are you about your “pile” lasting through a 50 year retirement now that you are a couple years into it?

!function(e){function n(t){if(r[t])return r[t].exports;var i=r[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var t=window.webpackJsonp;window.webpackJsonp=function(n,r,o){for(var s,a,u=0,l=[];u1)for(var t=1;tf)return!1;if(h>c)return!1;var e=window.require.hasModule("shared/browser")&&window.require("shared/browser");return!e||!e.opera}function a(){var e=o(d);d=[],0!==e.length&&l("/ajax/log_errors_3RD_PARTY_POST",{errors:JSON.stringify(e)})}var u=t("./third_party/tracekit.js"),l=t("./shared/basicrpc.js").rpc;u.remoteFetching=!1,u.collectWindowErrors=!0,u.report.subscribe(r);var c=10,f=window.Q&&window.Q.errorSamplingRate||1,d=[],h=0,p=i(a,1e3),m=window.console&&!(window.NODE_JS&&window.UNIT_TEST);n.report=function(e){try{m&&console.error(e.stack||e),u.report(e)}catch(e){}};var w=function(e,n,t){r({name:n,message:t,source:e,stack:u.computeStackTrace.ofCaller().stack||[]}),m&&console.error(t)};n.logJsError=w.bind(null,"js"),n.logMobileJsError=w.bind(null,"mobile_js")},"./shared/globals.js":function(e,n,t){var r=t("./shared/links.js");(window.Q=window.Q||{}).openUrl=function(e,n){var t=e.href;return r.linkClicked(t,n),window.open(t).opener=null,!1}},"./shared/links.js":function(e,n){var t=[];n.onLinkClick=function(e){t.push(e)},n.linkClicked=function(e,n){for(var r=0;r>>0;if("function"!=typeof e)throw new TypeError;for(arguments.length>1&&(t=n),r=0;r>>0,r=arguments.length>=2?arguments[1]:void 0,i=0;i>>0;if(0===i)return-1;var o=+n||0;if(Math.abs(o)===Infinity&&(o=0),o>=i)return-1;for(t=Math.max(o>=0?o:i-Math.abs(o),0);t>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(t=n),r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(t=n),r=new Array(s),i=0;i>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],i=arguments.length>=2?arguments[1]:void 0,o=0;o>>0,i=0;if(2==arguments.length)n=arguments[1];else{for(;i=r)throw new TypeError("Reduce of empty array with no initial value");n=t[i++]}for(;i>>0;if(0===i)return-1;for(n=i-1,arguments.length>1&&(n=Number(arguments[1]),n!=n?n=0:0!==n&&n!=1/0&&n!=-1/0&&(n=(n>0||-1)*Math.floor(Math.abs(n)))),t=n>=0?Math.min(n,i-1):i-Math.abs(n);t>=0;t--)if(t in r&&r[t]===e)return t;return-1};t(Array.prototype,"lastIndexOf",c)}if(!Array.prototype.includes){var f=function(e){"use strict";if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");var n=Object(this),t=parseInt(n.length,10)||0;if(0===t)return!1;var r,i=parseInt(arguments[1],10)||0;i>=0?r=i:(r=t+i)<0&&(r=0);for(var o;r