Why You Should Have a 401(k) Committee and How to Create One

Why You Should Have a 401(k) Committee and How to Create One

Are you thinking about starting a 401(k) plan or have a plan and are feeling overwhelmed with your current responsibilities? If you answered “yes” to either of these questions, then it might be time to create a 401(k) committee, which can help improve plan management and alleviate your administrative burden.  Want to learn more? Read on for answers to frequently asked questions about 401(k) committees.

1. What is a 401(k) committee?

A 401(k) committee, composed of several staff members, provides vital oversight of your 401(k) plan. Having a 401(k) committee is not required by the Department of Labor (DOL) or the IRS, but it’s a good fiduciary practice for 401(k) plan sponsors. Not only does it help share the responsibility so one person isn’t unduly burdened, it also provides much-needed checks and balances to help the plan remain in compliance. Specifically, a 401(k) committee handles tasks such as:

Assessing 401(k) plan vendorsEvaluating participation statistics and employee engagementReviewing investments, fees, and plan design

2. Who should be on my 401(k) committee?

Most importantly, anyone who serves as a plan fiduciary should have a role on the committee because they are held legally responsible for plan decisions. In addition, it’s a good idea to have:

Chief Operating Officer and/or Chief Financial OfficerHuman Resources DirectorOne or more members of senior managementOne or more plan participants

Senior leaders can provide valuable financial insight and oversight; however, it’s also important for plan participants to have representation and input. Wondering how many people to select? It’s typically based on the size of your company – a larger company may wish to have a larger committee. To avoid tie votes, consider selecting an odd number of members.

Once you’ve selected your committee members, it’s time to appoint a chairperson to run the meetings and a secretary to document decisions.

3. How do I create a 401(k) committee?

The first step in creating a 401(k) committee is to develop a charter. Once documented, the committee charter should be carefully followed. It doesn’t have to be lengthy, but it should include:

Committee purpose – Objectives and scope of authority, including who’s responsible for delegating that authorityCommittee structure – Number and titles of voting and non-voting members, committee roles (e.g., chair, secretary), and procedure for replacing membersCommittee meeting procedures – Meeting frequency, recurring agenda items, definition of quorum, and voting proceduresCommittee responsibilities – Review and oversight of vendors; evaluation of plan statistics, design and employee engagement; and appraisal of plan compliance and operationsDocumentation and reports – Process for recording and distributing meeting minutes and reporting obligations

Once you’ve selected your committee members and created a charter, it’s important to train members on their fiduciary duties and impress upon them the importance of acting in the best interest of plan participants and beneficiaries. With a 401(k) committee, your plan should run more smoothly and effectively.

Want a better 401(k)?
Learn More>

Did you miss our previous article…
https://www.toroption.co/?p=257

Focusing on What Matters: Using SLOs to Pursue User Happiness

Focusing on What Matters: Using SLOs to Pursue User Happiness

The umbrella term “observability” covers all manner of subjects, from basic telemetry to logging, to making claims about longer-term performance in the shape of service level objectives (SLOs) and occasionally service level agreements (SLAs). Here I’d like to discuss some philosophical approaches to defining SLOs, explain how they help with prioritization, and outline the tooling currently available to Betterment Engineers to make this process a little easier.

What is an SLO?

At a high level, a service level objective is a way of measuring the performance of, correctness of, validity of, or efficacy of some component of a service over time by comparing the functionality of specific service level indicators (metrics of some kind) against a target goal. For example,

99.9% of requests complete with a 2xx, 3xx or 4xx HTTP code within 2000ms over a 30 day period

The service level indicator (SLI) in this example is a request completing with a status code of 2xx, 3xx or 4xx and with a response time of at most 2000ms. The SLO is the target percentage, 99.9%. We reach our SLO goal if, during a 30 day period, 99.9% of all requests completed with one of those status codes and within that range of latency. If our service didn’t succeed at that goal, the violation overflow — called an “error budget” — shows us by how much we fell short. With a goal of 99.9%, we have 40 minutes and 19 seconds of downtime available to us every 28 days. Check out more error budget math here.


1 Google SRE Workbook https://sre.google/sre-book/availability-table/

If we fail to meet our goals, it’s worthwhile to step back and understand why. Was the error budget consumed by real failures? Did we notice a number of false positives? Maybe we need to reevaluate the metrics we’re collecting, or perhaps we’re okay with setting a lower target goal because there are other targets that will be more important to our customers.

It’s all about the customer

This is where the philosophy of defining and keeping track of SLOs comes into play. It starts with our users – Betterment users – and trying to provide them with a certain quality of service. Any error budget we set should account for our fiduciary responsibilities, and should guarantee that we do not cause an irresponsible impact to our customers. We also assume that there is a baseline degree of software quality baked-in, so error budgets should help us prioritize positive impact opportunities that go beyond these baselines.

Sometimes there are a few layers of indirection between a service and a Betterment customer, and it takes a bit of creativity to understand what aspects of the service directly affects them. For example, an engineer on a backend or data-engineering team provides services that a user-facing component consumes indirectly. Or perhaps the users for a service are Betterment engineers, and it’s really unclear how that work affects the people who use our company’s products. It isn’t that much of a stretch to claim that an engineer’s level of happiness does have some effect on the level of service they’re capable of providing a Betterment customer!

Let’s say we’ve defined some SLOs and notice they are falling behind over time. We might take a look at the metrics we’re using (the SLIs), the failures that chipped away at our target goal, and, if necessary, re-evaluate the relevancy of what we’re measuring. Do error rates for this particular endpoint directly reflect an experience of a user in some way – be it a customer, a customer-facing API, or a Betterment engineer? Have we violated our error budget every month for the past three months? Has there been an increase in Customer Service requests to resolve problems related to this specific aspect of our service? Perhaps it is time to dedicate a sprint or two to understanding what’s causing degradation of service. Or perhaps we notice that what we’re measuring is becoming increasingly irrelevant to a customer experience, and we can get rid of the SLO entirely!

Benefits of measuring the right things, and staying on target

The goal of an SLO based approach to engineering is to provide data points with which to have a reasonable conversation about priorities (a point that Alex Hidalgo drives home in his book Implementing Service Level Objectives). In the case of services not performing well over time, the conversation might be “focus on improving reliability for service XYZ.” But what happens if our users are super happy, our SLOs are exceptionally well-defined and well-achieved, and we’re ahead of our roadmap? Do we try to get that extra 9 in our target – or do we use the time to take some creative risks with the product (feature-flagged, of course)? Sometimes it’s not in our best interest to be too focused on performance, and we can instead “use up our error budget” by rolling out some new A/B test, or upgrading a library we’ve been putting off for a while, or testing out a new language in a user-facing component that we might not otherwise have had the chance to explore.

The tools to get us there

Let’s dive into some tooling that the SRE team at Betterment has built to help Betterment engineers easily start to measure things.

Collecting the SLIs and Creating the SLOs

The SRE team has a web-app and CLI called `coach` that we use to manage continuous integration (CI) and continuous delivery (CD), among other things. We’ve talked about Coach in the past here and here. At a high level, the Coach CLI generates a lot of yaml files that are used in all sorts of places to help manage operational complexity and cloud resources for consumer-facing web-apps. In the case of service level indicators (basically metrics collection), the Coach CLI provides commands that generate yaml files to be stored in GitHub alongside application code. At deploy time, the Coach web-app consumes these files and idempotently create Datadog monitors, which can be used as SLIs (service level indicators) to inform SLOs, or as standalone alerts that need immediate triage every time they’re triggered.

In addition to Coach explicitly providing a config-driven interface for monitors, we’ve also written a couple handy runtime specific methods that result in automatic instrumentation for Rails or Java endpoints. I’ll discuss these more below.

We also manage a separate repository for SLO definitions. We left this outside of application code so that teams can modify SLO target goals and details without having to redeploy the application itself. It also made visibility easier in terms of sharing and communicating different team’s SLO definitions across the org.

Monitors in code

Engineers can choose either StatsD or Micrometer to measure complicated experiences with custom metrics, and there’s various approaches to turning those metrics directly into monitors within Datadog. We use Coach CLI driven yaml files to support metric or APM monitor types directly in the code base. Those are stored in a file named .coach/datadog_monitors.yml and look like this:

monitors:
– type: metric
metric: “coach.ci_notification_sent.completed.95percentile”
name: “coach.ci_notification_sent.completed.95percentile SLO”
aggregate: max
owner: sre
alert_time_aggr: on_average
alert_period: last_5m
alert_comparison: above
alert_threshold: 5500
– type: apm
name: “Pull Requests API endpoint violating SLO”
resource_name: api::v1::pullrequestscontroller_show
max_response_time: 900ms
service_name: coach
page: false
slack: false>

It wasn’t simple to make this abstraction intuitive between a Datadog monitor configuration and a user interface. But this kind of explicit, attribute-heavy approach helped us get this tooling off the ground while we developed (and continue to develop) in-code annotation approaches. The APM monitor type was simple enough to turn into both a Java annotation and a tiny domain specific language (DSL) for Rails controllers, giving us nice symmetry across our platforms. . This `owner` method for Rails apps results in all logs, error reports, and metrics being tagged with the team’s name, and at deploy time it’s aggregated by a Coach CLI command and turned into latency monitors with reasonable defaults for optional parameters; essentially doing the same thing as our config-driven approach but from within the code itself

class DeploysController

For Java apps we have a similar interface (with reasonable defaults as well) in a tidy little annotation.

@Sla
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Sla {

@AliasFor(annotation = Sla.class)
long amount() default 25_000;

@AliasFor(annotation = Sla.class)
ChronoUnit unit() default ChronoUnit.MILLIS;

@AliasFor(annotation = Sla.class)
String service() default “custody-web”;

@AliasFor(annotation = Sla.class)
String slackChannelName() default “java-team-alerts”;

@AliasFor(annotation = Sla.class)
boolean shouldPage() default false;

@AliasFor(annotation = Sla.class)
String owner() default “java-team”;>

Then usage is just as simple as adding the annotation to the controller:

@WebController(“/api/stuff/v1/service_we_care_about”)
public class ServiceWeCareAboutController {

@PostMapping(“/search”)
@CustodySla(amount = 500)
public SearchResponse search(@RequestBody @Valid SearchRequest request) {…}>

At deploy time, these annotations are scanned and converted into monitors along with the config-driven definitions, just like our Ruby implementation.

SLOs in code

Now that we have our metrics flowing, our engineers can define SLOs. If an engineer has a monitor tied to metrics or APM, then they just need to plug in the monitor ID directly into our SLO yaml interface.

– last_updated_date: “2021-02-18”
approval_date: “2021-03-02”
next_revisit_date: “2021-03-15”
category: latency
type: monitor
description: This SLO covers latency for our CI notifications system – whether it’s the github context updates on your PRs or the slack notifications you receive.
tags:
– team:sre
thresholds:
– target: 99.5
timeframe: 30d
warning_target: 99.99
monitor_ids:
– 30842606

The interface supports metrics directly as well (mirroring Datadog’s SLO types) so an engineer can reference any metric directly in their SLO definition, as seen here:

# availability
– last_updated_date: “2021-02-16”
approval_date: “2021-03-02”
next_revisit_date: “2021-03-15”
category: availability
tags:
– team:sre
thresholds:
– target: 99.9
timeframe: 30d
warning_target: 99.99
type: metric
description: 99.9% of manual deploys will complete successfully over a 30day period.
query:
# (total_events – bad_events) over total_events == good_events/total_events
numerator: sum:trace.rack.request.hits{service:coach,env:production,resource_name:deployscontroller_create}.as_count()-sum:trace.rack.request.errors{service:coach,env:production,resource_name:deployscontroller_create}.as_count()
denominator: sum:trace.rack.request.hits{service:coach,resource_name:deployscontroller_create}.as_count()

We love having these SLOs defined in GitHub because we can track who’s changing them, how they’re changing, and get review from peers. It’s not quite the interactive experience of the Datadog UI, but it’s fairly straightforward to fiddle in the UI and then extract the resulting configuration and add it to our config file.

Notifications

When we merge our SLO templates into this repository, Coach will manage creating SLO resources in Datadog and accompanying SLO alerts (that ping slack channels of our choice) if and when our SLOs violate their target goals. This is the slightly nicer part of SLOs versus simple monitors – we aren’t going to be pinged for every latency failure or error rate spike. We’ll only be notified if, over 7 days or 30 days or even longer, they exceed the target goal we’ve defined for our service. We can also set a “warning threshold” if we want to be notified earlier when we’re using up our error budget.

Fewer alerts means the alerts should be something to take note of, and possibly take action on. This is a great way to get a good signal while reducing unnecessary noise. If, for example, our user research says we should aim for  99.5% uptime, that’s 3h 21m 36s of downtime available per 28 days. That’s a lot of time we can reasonably not react to failures. If we aren’t alerting on those 3 hours of errors, and instead just once if we exceed that limit, then we can direct our attention toward new product features, platform improvements, or learning and development.

The last part of defining our SLOs is including a date when we plan to revisit that SLO specification. Coach will send us a message when that date rolls around to encourage us to take a deeper look at our measurements and possibly reevaluate our goals around measuring this part of our service.

What if SLOs don’t make sense yet?

It’s definitely the case that a team might not be at the level of operational maturity where defining product or user-specific service level objectives is in the cards. Maybe their on-call is really busy, maybe there are a lot of manual interventions needed to keep their services running, maybe they’re still putting out fires and building out their team’s systems. Whatever the case may be, this shouldn’t deter them from collecting data. They can define what is called an “aspirational” SLO – basically an SLO for an important component in their system – to start collecting data over time. They don’t need to define an error budget policy, and they don’t need to take action when they fail their aspirational SLO. Just keep an eye on it.

Another option is to start tracking the level of operational complexity for their systems. Perhaps they can set goals around “Bug Tracker Inbox Zero” or “Failed Background Jobs Zero” within a certain time frame, a week or a month for example. Or they can define some SLOs around types of on-call tasks that their team tackles each week. These aren’t necessarily true-to-form SLOs but engineers can use this framework and tooling provided to collect data around how their systems are operating and have conversations on prioritization based on what they discover, beginning to build a culture of observability and accountability

Conclusion

Betterment is at a point in its growth where prioritization has become more difficult and more important. Our systems are generally stable, and feature development is paramount to business success. But so is reliability and performance. Proper reliability is the greatest operational requirement for any service2. If the service doesn’t work as intended, no user (or engineer) will be happy. This is where SLOs come in. SLOs should align with business objectives and needs, which will help Product and Engineering Managers understand the direct business impact of engineering efforts. SLOs will ensure that we have a solid understanding of the state of our services in terms of reliability, and they empower us to focus on user happiness. If our SLOs don’t align directly with business objectives and needs, they should align indirectly via tracking operational complexity and maturity.

So, how do we choose where to spend our time? SLOs (service level objectives) – including managing their error budgets – will permit us – our product engineering teams – to have the right conversations and make the right decisions about prioritization and resourcing so that we can balance our efforts spent on reliability and new product features, helping to ensure the long term happiness and confidence of our users (and engineers).

2 Alex Hidalgo, Implementing Service Level Objectives

This article is part of Engineering at Betterment.

These articles are maintained by Betterment Holdings Inc. and they are not associated with Betterment, LLC or MTG, LLC. The content on this article is for informational and educational purposes only. © 2017–2021 Betterment Holdings Inc.

Did you miss our previous article…
https://www.toroption.co/?p=253

Pros and Cons of OregonSaves for Small Businesses

Pros and Cons of OregonSaves for Small Businesses

Launched in 2017, OregonSaves was the first state-based retirement savings program in the country. Now, it has more than $100 million in assets. Even the smallest businesses are required to facilitate OregonSaves if they don’t offer an employer-sponsored retirement plan. In fact, the deadline for employers with four or fewer employees is targeted for 2022. If you’re wondering whether OregonSaves is the best choice for your employees, read on for answers to frequently asked questions.

1. Do I have to offer my employees OregonSaves?

No. Oregon laws require businesses to offer retirement benefits, but you don’t have to elect OregonSaves. If you provide a 401(k) plan (or another type of employer-sponsored retirement program), you may request an exemption.

2. What is OregonSaves?

OregonSaves is a Payroll Deduction IRA program—also known as an “Auto IRA” plan. Under an Auto IRA plan, you must automatically enroll your employees into the program. Specifically, the Oregon plan requires employers to automatically enroll employees at a 5% deferral rate with automatic, annual 1% increases until their savings rate reaches 10%. All contributions are invested into a Roth IRA.

As an eligible employer, you must facilitate the program, set up the payroll deduction process, and send the contributions to OregonSaves. The first $1,000 of an employee’s contributions will be invested in the OregonSaves Capital Preservation Fund, and savings over $1,000 will be invested in an OregonSaves Target Retirement Fund based on age. Employees retain control over their Roth IRA and can customize their account by selecting their own contribution rate and investments—or by opting out altogether. (They can also opt out of the annual increases.)

3. Why should I consider OregonSaves?

OregonSaves is a simple, straightforward way to help your employees save for retirement. Brought to you by Oregon State Treasury, the program is overseen by the Oregon Retirement Savings Board and administered by a program service provider. As an employer, your role is limited and there are no fees to provide OregonSaves to your employees.

4. Are there any downsides to OregonSaves?

Yes, there are factors that may may make OregonSaves less appealing than other retirement plans. Here are some important considerations:

OregonSaves is a Roth IRA, which means it has income limits—If your employees earn above a certain threshold, they will not be able to participate in OregonSaves. For example, single filers with modified adjusted 2021 gross incomes of more than $140,000 would not be eligible to contribute. However, 401(k) plans aren’t subject to the same income restrictions.OregonSaves is not subject to worker protections under ERISA—Other tax-qualified retirement savings plans—such as 401(k) plans—are subject to ERISA, a federal law that requires fiduciary oversight of retirement plans.Employees don’t receive a tax benefit for their savings in the year they make contributions—Unlike a 401(k) plan—which allows both before-tax and after-tax contributions—OregonSaves only allows after-tax (Roth) contributions. Investment earnings within a Roth IRA are tax-deferred until withdrawn and may eventually be tax-free.Contribution limits are far lower—Employees may save up to $6,000 in an IRA in 2021 ($7,000 if they’re age 50 or older), while in a 401(k) plan employees may save up to $19,500 in 2021 ($26,000 if they’re age 50 or older). So even if employees max out their contribution to OregonSaves, they may still fall short of the amount of money they’ll likely need to achieve a financially secure retirement.No employer matching and/or profit sharing contributions—Employer contributions are a major incentive for employees to save for their future. 401(k) plans allow you the flexibility of offering employer contributions; however, OregonSaves does not.Limited investment options—OregonSaves offers a relatively limited selection of investments, which may not be appropriate for all investors. Typical 401(k) plans offer a much broader range of investment options and often additional resources such as managed accounts and personalized advice.Potentially higher fees for employees—There is no cost to employers to offer OregonSaves; however, employees do pay approximately $1 per year for every $100 in their account, depending upon their investments. While different 401(k) plans charge different fees, some plans have far lower employee fees. Fees are a big consideration because they can seriously erode employee savings over time.

5. Why should I consider a 401(k) plan instead of OregonSaves?

For many employers —even very small businesses—a 401(k) plan may be a more attractive option for a variety of reasons. As an employer, you have greater flexibility and control over your plan service provider, investments, and features so you can tailor the plan that best meets your company’s needs and objectives. Plus, you can benefit from:

Tax credits—Thanks to the SECURE Act, you can now receive up to $15,000 in tax credits to help defray the start-up costs of your 401(k) plan. Plus, if you add an eligible automatic enrollment feature, you could earn an additional $1,500 in tax credits. It’s important to note that the proposed SECURE Act 2.0 may offer even more tax credits.Tax deductions—If you pay for plan expenses like administrative fees, you may be able to claim them as a business tax deduction.

With a 401(k) plan, your employees may also likely have greater:

Choice—You can give employees, regardless of income, the choice of reducing their taxable income now by making pre-tax contributions or making after-tax contributions (or both!) Not only that, but employees can contribute to a 401(k) plan and an IRA if they wish—giving them even more opportunity to save for the future they envision. Saving power—Thanks to the higher contribution limits of a 401(k) plan, employees can save thousands of dollars more—potentially setting them up for a more secure future. Plus, if the 401(k) plan fees are lower than what an individual might have to pay with OregonSaves, that means more employee savings are available for account growth.Investment freedom—Employees may be able to access more investment options and the guidance they need to invest with confidence. Case in point: Betterment offers 500+ low-cost, globally diversified portfolios (including those focused on making a positive impact on the climate and society).Support—401(k) providers often provide a greater degree of support, such as educational resources on a wide range of topics. For example, Betterment offers personalized, “always-on” advice to help your employees reach their retirement goals and pursue overall financial wellness. Plus, we provide an integrated view of your employees’ outside assets so they can see their full financial picture—and track their progress toward all their savings goals.

6. What action should I take now?

If you decide that OregonSaves is most appropriate for your company, visit the website to register.

If you decide to explore your retirement plan alternatives, talk to Betterment. We can help you get your plan up and running fast—and make ongoing plan administration a breeze. Plus, our fees are well below industry average. That can mean more value for your company—and more savings for your employees. Get started now.

Betterment is not a tax advisor, and the information contained in this article is for informational purposes only.

Want a better 401(k)?
Get started>

Betterment’s Retirement Advice Tools Explained

Betterment’s Retirement Advice Tools Explained


TABLE OF CONTENTS

Define What Retirement Means To YouSetting Up Your Retirement Projections At BettermentUnderstanding Betterment’s RecommendationsTaking Action

Savings towards retirement is one of the most popular reasons people use Betterment. This makes sense, since almost everybody dreams of retiring some day (or at least having the option to quit working or switch careers, if they choose).

That’s why Betterment offers retirement tools in your account that allow you to define what retirement means to you, and then run projections that give guidance on whether your goal is on-track or off-track. Our advanced projections include key inputs like Social Security, inflation, life expectancy, and even investment accounts not held at Betterment.

Once you have your retirement projections setup in your retirement goal, Betterment will give you personalized advice on how much you should be saving towards retirement, which accounts are most optimal for you, and how you should be invested. You can even run different “what-if” scenarios to see how things like retiring earlier, or saving more, affect your projections.

Of course, we make it easy for you to then take action and make your money work for you. For example, you can open various types of retirement accounts. You can also enable our many automated tools to help you save more, manage your investments, and manage taxes. We even work to make rolling over other retirement accounts as easy as possible.

Let’s walk through each of these areas in more detail, so you can learn how to make the most of Betterment’s retirement planning tools.

Define what retirement means to you.

Each person’s retirement plan is unique. That’s why we allow you to tell us how and when you’d like to retire, and then we shape our advice around those inputs. Afterall, our advice will be very different if you plan on retiring at age 55 vs. age 75. This is what we call goal-based investing, where you tell us your various financial goals, and we give you advice on how to achieve them.

For many individuals, the initial step of defining retirement can be difficult. This is understandable. We often hear questions like “how do I know how much money I’ll spend in retirement?” or “can I retire tomorrow?” Don’t worry. Betterment built tools to help you answer these tough questions.

Once you open a retirement goal in your Betterment account, our retirement planning tool will walk you through how to estimate both your retirement spending and retirement age in order to set up your plan.

Estimating Retirement Spending

How much you would like to spend during your retirement is the most important driver of your retirement plan, but it is often the hardest part to predict. Maybe your kids will be independent by then, but health care may cost more. Maybe your house will be paid off, but you’ll also want to travel more. These are just a few examples of how some spending categories may decrease, while others may increase.

If you’re one of the few who happen to have a good idea of what you’d like to spend during retirement, we allow you to simply input that number. For those who are unsure, we have a helpful calculator that will automatically estimate a spending number for you. This number can serve as a starting point, but you can always override it.

We then estimate your retirement spending by running key data points through a spending estimate formula. This formula includes expected wage increases (which tend to be higher than general inflation), cost of living data for your particular zip code, and an estimated percentage of income used to support your lifestyle (i.e. spent on goods and services) based on data from individuals with similar income to you. While not an exhaustive list, these data points provide a useful spending overview that are factored into our advice.

Estimating Retirement Age

When you’ll retire is also difficult to predict. The choice isn’t always yours to make either, as can be the case with unexpected health issues or being forced out of work.

As with your retirement spending, if you have a particular retirement age in mind, you can simply enter it into our system. For those who are unsure, we default you to age 68, which is just beyond Full Retirement Age (FRA), as defined by the Social Security Administration, for many of our customers.

Making Changes And Updates

We know that life happens, and things change. The retirement plan you set up in your 30’s or 40’s may become outdated. That’s why we build flexibility into our retirement projections, and allow you to make changes to your plan.

You can easily update your desired retirement spending or desired retirement age at any time. When you do, we will automatically update our projections based on your new inputs. This way, you can ensure your retirement plan is always up-to-date.

In fact, we encourage you to review your retirement projections periodically for this exact reason. As a general guideline, you should review your retirement projections once per year, or after any major life event like a promotion, change in marital status, birth of a child, or other similar event.

Begin your retirement journey
Join Betterment>

Setting Up Your Retirement Projections At Betterment

Now that you’ve defined what retirement means to you, it’s time to run some projections and determine if you seem on-track or off-track to meet your retirement goal. Betterment will calculate this for you, but first we need to gather some information about your situation. The more information you tell us, the more accurate our corresponding projections can be.

Existing Savings: Tell us which accounts you already have for retirement, so we can give you credit for the savings you already have. This should not include accounts that are set aside for other purposes, like emergency funds, buying a house, or your kid’s college. But it should include retirement accounts, even if they are not held at Betterment. Common examples of this are 401(k)s and your spouse’s retirement accounts as well. We recommend syncing these accounts to your Betterment account.Planned Future Savings: We can also factor in future retirement savings that you expect to make. Under each account, you can tell us how much you plan to contribute per year. You can even include employer matches, if applicable, to your workplace retirement accounts.Social Security Benefits: Social Security plays a key role in retirement for millions of Americans. We use your current income to estimate Social Security benefits according to the U.S. Social Security Administration’s benefit rules. We also adjust expected Social Security benefits based on projections from the Trustees Report. However, this is just an estimate, and you may prefer to instead login to your online Social Security account to view your official estimate and use that instead.Other Retirement Income: Some individuals may have other sources of retirement income, such as a pension or rental income. If this applies, you can enter that information into your projection inputs as well.Life Expectancy: We default your life expectancy to age 90, which is a conservative estimate compared to average life expectancies. Women tend to live longer than men, so keep this in mind as you adjust your retirement plan. You can always override our default age, if you’d like.

With all of these inputs, your retirement plan should be personalized to your situation. We then use our Goal Projection and Advice methodology to estimate if you appear to be on-track to reach your retirement goal or not. If you’re off-track, that’s okay. We’ll give you recommendations to get on-track, and make it easy to take action on those recommendations. We don’t expect change to happen overnight, and even knowing where you stand is a great first step.

Understanding Betterment’s Recommendations

With your retirement projections in place, Betterment can now give you personalized recommendations to help you get on-track, or even if you are already on-track, to help maximize your savings and investments. The recommendations we give should answer many common questions we hear from customers, such as:

How much should I be saving?Which accounts should I contribute to?How should I be invested?

How much should I be saving?

One of the most important recommendations we can give is telling you how much we estimate you should be saving per year to be on-track for retirement. Betterment will give you this top line number so that you have a target in mind to strive towards.

Which accounts should I contribute to?

For many people, you will need to combine multiple accounts to reach your goals and optimize your savings. Once you know how much you should be saving, we will also tell you which mix of accounts you should be putting those savings into, and show that to you in a prioritized list. This list includes things like tax bracket, employer match info, account fees, contribution limits, and more. This helps make sure your money is working as hard as possible for you.

In particular, the use of tax-advantaged retirement accounts are an important benefit to consider when saving for retirement. Contributions to Traditional 401(k), Traditional 403(b), and Traditional IRA accounts are typically tax-deductible, which means you contribute on a pre-tax basis and normally don’t pay taxes until you make withdrawals. Contributions to Roth 401(k), Roth 403(b), and Roth IRA accounts are not tax-deductible, which means you contribute on an after-tax basis but they grow tax-free.

How you contribute to your retirement accounts now can make a big difference over time. The earlier you invest, the more possibility there is for your investments to appreciate. This is especially true for retirement savings, because when you use tax-advantaged retirement accounts, such as IRAs or 401(k)s, all that time spent in the market can lead to benefits in tax-free growth.

How should I be invested?

Another critical component of your retirement plan is making sure you are invested appropriately. Betterment’s tools will give you feedback on key areas of your investments, even on your non-Betterment accounts. Our tools will give you feedback on how risky your investments are and if that risk level is appropriate given your time horizon to retirement.

As a default for our recommended actions, if you have 20 or more years until you retire, we recommend 90% stocks. Then, our investment advice reduces your risk over time until your retirement date, when it hits 56% stocks. Finally, it glides down to 30% stocks during retirement.

Our tools will also analyze your external accounts to determine if you seem to be paying more fees than you have to, and if you have too much cash sitting in your retirement accounts.

Taking Action

Even the best retirement plan won’t do you much good if you don’t take action. With Betterment’s smooth interface and powerful automation, taking action has rarely been easier.

Open multiple retirement accounts: Many people can benefit from having multiple retirement accounts, like Roth and Traditional accounts. This can help you optimize for taxes and save beyond the contribution limits that some accounts have.Enable tax management algorithms: Optimizing for taxes can help your money work harder for you. Betterment is known for our advanced tax strategies like tax loss harvesting and tax coordination, which can both be put on autopilot in your Betterment accounts at the flip of a switch.Select a portfolio strategy: Betterment offers multiple portfolio strategies, which allow you to customize your investments and choose the strategy that best fits your needs and preferences.Enable investment management algorithms: Betterment allows you to automate many areas of investment management like rebalancing and auto-adjusting your investments over time.Roll over retirement accounts: Consolidating your investment accounts into Betterment may help you ensure your retirement portfolio is working together in a seamless, automated manner.Enable automatic deposits: Making retirement savings automatic can help you save more, and make maxing out your retirement accounts easier.Add beneficiaries: Adding beneficiaries can help ensure your money goes where you want it to, even after you pass away.

All of these actions are important in setting up a comprehensive retirement plan that incorporates savings, investments, taxes, and more. Generally speaking, the earlier you start, the better off you’ll be. Start taking the above actions to set up your retirement plan at Betterment today.

Start investing in your retirement
Get started>Back to Top

Did you miss our previous article…
https://www.toroption.co/?p=247

Pros and Cons of Illinois Secure Choice for Small Businesses

Pros and Cons of Illinois Secure Choice for Small Businesses

Since it was launched in 2018, the Illinois Secure Choice retirement program has helped thousands of people in Illinois save for their future. If you’re an employer in Illinois, state laws require you to offer Illinois Secure Choice if you:

Have 25 or more employees during all four quarters of the previous calendar yearHave been in operation for at least two yearsDo not offer an employer-sponsored retirement plan

If your company has recently become eligible for Illinois Secure Choice or you’re wondering whether it’s the best choice for your employees, read on for answers to frequently asked questions.

1. Do I have to offer my employees Illinois Secure Choice?

No. Illinois laws require businesses with 25 or more employees to offer retirement benefits, but you don’t have to elect Illinois Secure Choice. If you provide a 401(k) plan (or another type of employer-sponsored retirement program), you may request an exemption.

2. What is Illinois Secure Choice?

Illinois Secure Choice is a Payroll Deduction IRA program—also known as an “Auto IRA” plan. Under an Auto IRA plan, you must automatically enroll your employees in the program. Specifically, the Illinois plan requires employers to automatically enroll employees at a 5% deferral rate, and contributions are invested in a Roth IRA.

As an eligible employer, you must set up the payroll deduction process and remit participating employee contributions to the Secure Choice plan provider. Employees retain control over their Roth IRA and can customize their account by selecting their own contribution rate and investments—or by opting out altogether.

3. Why should I consider Illinois Secure Choice?

Illinois Secure Choice is a simple, straightforward way to help your employees save for retirement. It’s administered by a private-sector financial services firm and sponsored by the State of Illinois. As an employer, your role is limited and there are no fees to offer Illinois Secure Choice.

4. Are there any downsides to Illinois Secure Choice?

Yes, there are factors that may make Illinois Secure Choice less appealing than other retirement plans like 401(k) plans. Here are some important considerations:

Illinois Secure Choice is a Roth IRA, which means it has income limits—If your employees earn above a certain threshold, they will not be able to participate in Illinois Secure Choice. For example, single filers with modified adjusted gross incomes of more than $140,000 in 2021 would not be eligible to contribute. However, 401(k) plans aren’t subject to the same income restrictions.Illinois Secure Choice is not subject to worker protections under ERISA—Other tax-qualified retirement savings plans—such as 401(k) plans—are subject to ERISA, a federal law that requires fiduciary oversight of retirement plans.Employees don’t receive a tax benefit for their savings in the year they make contributions—Unlike a 401(k) plan—which allows both before-tax and after-tax contributions—Illinois Secure Choice only allows after-tax (Roth) contributions. Investment earnings within a Roth IRA are tax-deferred until withdrawn and may eventually be tax-free.Contribution limits are far lower—Employees may save up to $6,000 in an IRA in 2021 ($7,000 if they’re age 50 or older), while in a 401(k) plan employees may save up to $19,500 in 2021 ($26,000 if they’re age 50 or older). So even if employees max out their contribution to Illinois Secure Choice, they may still fall short of the amount of money they’ll likely need to achieve a financially secure retirement.No employer matching and/or profit sharing contributions—Employer contributions are a major incentive for employees to save for their future. 401(k) plans allow you the flexibility of offering employer contributions; however, Illinois Secure Choice does not.Limited investment options—Illinois Secure Choice offers a relatively limited selection of investments, which may not be appropriate for all investors. Typical 401(k) plans offer a much broader range of investment options and often additional resources such as managed accounts and personalized advice.Potentially higher fees for employees—There is no cost to employers to offer Illinois Secure Choice; however, employees do pay approximately $0.75 per year for every $100 in their account, depending upon their investments. While different 401(k) plans charge different fees, some plans have far lower employee fees. Fees are a big consideration because they can seriously erode employee savings over time.

 5. Why should I consider a 401(k) plan instead of Illinois Secure Choice?

For many employers —even very small businesses—a 401(k) plan may be a more attractive option for a variety of reasons. As an employer, you have greater flexibility and control over your plan service provider, investments, and features so you can tailor the plan that best meets your company’s needs and objectives. Plus, you’ll benefit from:

Tax credits—Thanks to the SECURE Act, you can now receive up to $15,000 in tax credits to help defray the start-up costs of your 401(k) plan. Plus, if you add an eligible automatic enrollment feature, you could earn an additional $1,500 in tax credits. It’s important to note that the proposed SECURE Act 2.0 may offer even more tax credits.Tax deductions—If you pay for plan expenses like administrative fees, you may be able to claim them as a business tax deduction.

With a 401(k) plan, your employees may also likely have greater:

Choice—You can give employees, regardless of income, the choice of reducing their taxable income now by making pre-tax contributions or making after-tax contributions (or both!) Not only that, but employees can contribute to a 401(k) plan and an IRA if they wish—giving them even more opportunity to save for the future they envision. Saving power—Thanks to the higher contribution limits of a 401(k) plan, employees can save thousands of dollars more—potentially setting them up for a more secure future. Plus, if the 401(k) plan fees are lower than what an individual might have to pay with Illinois Secure Choice, that means more employee savings are available for account growth.Investment freedom—Employees may be able to access more investment options and the guidance they need to invest with confidence. Case in point: Betterment offers 500+ low-cost, globally diversified portfolios (including those focused on making a positive impact on the climate and society).Support—401(k) providers often provide a greater degree of support, such as educational resources on a wide range of topics. For example, Betterment offers personalized, “always-on” advice to help your employees reach their retirement goals and pursue overall financial wellness. Plus, we provide an integrated view of your employees’ outside assets so they can see their full financial picture—and track their progress toward all their savings goals.

6. What action should I take now?

If you decide that Illinois Secure Choice is most appropriate for your company, visit the website to register.

If you decide to explore your retirement plan alternatives, talk to Betterment. We can help you get your plan up and running fast—and make ongoing plan administration a breeze. Plus, our fees are well below industry average. That can mean more value for your company—and more savings for your employees. Get started now.

Betterment is not a tax advisor, and the information contained in this article is for informational purposes only.

Want a better 401(k)?
Learn More>

401(k) Required Minimum Distributions (RMDs) now start at age 72

401(k) Required Minimum Distributions (RMDs) now start at age 72

401(k) plans can help you save for retirement in a significantly tax-advantaged way. However, the Internal Revenue Service (IRS) requires that you start taking withdrawals from their qualified retirement accounts when you reach the age 72. These withdrawals are called required minimum distributions (RMDs).

Why do I have to take RMDs?

In exchange for the tax advantages you enjoy by contributing to your 401(k) plan, the IRS requests collection of taxes on these amounts when you turn 72. The IRS taxes RMDs as ordinary income, meaning withdrawals will count towards your total taxable income for the year.

Generally, the IRS collects taxes on the gains in retirement accounts such as 401(k)s. However, if Roth 401(k) account assets are held for at least 5 years, Roth 401(k) funds are not taxed. Because there are taxes being paid to the government, these distributions are NOT eligible for rollover to another account.

When do I have to start taking RMDs?

Before the 2019 SECURE Act, RMDs applied to employees who turned 70 ½. However, this legislation increased the RMD age to 72 starting in 2020.

You may remember that the CARES Act, passed in March 2020 in response to the COVID-19 crisis, temporarily waived RMDs for 2020. RMDs resumed for the 2021 plan year with the newly increased age limit of 72.

How much do I have to withdraw?

RMDs are calculated based on your age and your account balance as of the end of the previous year. To determine the required distribution amount, Betterment divides your previous year’s ending account balance by your life expectancy factor (based on your age) from the uniform lifetime table (shown below). As a note, if you had no balance at the end of the previous year, then your first RMD will not occur until the following year.

Uniform Lifetime TableAge of Plan ParticipantLife Expectancy (in Years)7027.47126.57225.67324.77423.87522.97622.07721.27820.37919.58018.78117.98217.18316.38415.58514.88614.18713.48812.78912.09011.49110.89210.2939.6949.1958.6968.1977.6987.1996.71006.31015.91025.51035.21044.91054.51064.21073.91083.71093.41103.11112.91122.61132.41142.1115 and older1.9

Additionally, if you have taken a cash distribution from your 401(k) account in any given year you are subject to an RMD, and that distribution amount is equal to or greater than the RMD amount, that distribution will qualify as the required amount and no additional distribution is required.

Does everyone who turns 72 need to take an RMD?

Turning 72 in a given year doesn’t mean that you have to take an RMD. Only those who turn 72 in a given year AND meet any of the following criteria must take an RMD:

You have taken an RMD in previous years. If so, then you must take an RMD by December 31 of every year.You own more than 5% of the company sponsoring the 401(k) plan. If so, then you must take an RMD by December 31 every year.You have left the company (terminated or retired) in the year you turned 72. If so, then the first RMD does not need to occur until April 1 (otherwise known as the Required Beginning Date) of the following year but must occur consecutively by December 31 for every year.>Example: John turned 72 on June 1, 2021. John also decided to leave his company on August 1, 2021. He has been continuously contributing to his 401(k) account for the past 5 years. The first RMD must occur by April 1, 2022. The next RMD must occur by December 31, 2022 and every year thereafter.>NOTE: that this criteria means that you do NOT need to take an RMD if you meet the RMD age and are still working.You are a beneficiary or alternate payee of an account holder who meets the above criteria.

What are the consequences of not taking an RMD?

Failure to take an RMD for a given year will result in a penalty of 50% of the amount not taken on time by the IRS.

How do I take an RMD?

Your employer will notify you that you may be subject to an RMD and provide you with an RMD form. You will need to fill and return this form to your employer for approval. Betterment will process the RMD and the distribution will be delivered via the method of your choice (check or ACH).

Want a better 401(k)?
Learn More>

Did you miss our previous article…
https://www.toroption.co/?p=241

Meet $VOTE: Channeling Our Values Through Shareholder Engagement

Meet $VOTE: Channeling Our Values Through Shareholder Engagement

 

Today, we are excited to announce that we will begin integrating the $VOTE ETF, recently launched by Engine No. 1, into all of Betterment’s Socially Responsible Investing portfolios.

This new ETF invests in 500 of the largest U.S. companies, weighted according to their size, with a management fee of only .05%. You might think that this sounds a lot like a garden variety index fund tracking the S&P 500—a commodity for many years now.

So, why the excitement?

In short, $VOTE represents a highly innovative approach to pushing the economy towards sustainability via index fund investing. It may be “passive” in the traditional sense—buying shares in companies purely based on an index—but it is “active” when it comes to engaging with those companies as a shareholder.

Beyond Divestment: What’s Shareholder Engagement?

Historically, values-aligned investing has often been synonymous with avoiding the purchase of certain stocks—a practice often referred to as “divestment.” The alternative to divestment is “engagement.” By owning a stock, and using your rights to vote on shareholder resolutions, you can attempt to change the company’s activities from the inside.

Vanguard, BlackRock, and State Street—the “Big Three” largest fund managers—are collectively the biggest shareholders in most companies, but have historically been reluctant to rock the boat and aggressively challenge management. As a result, when it comes to investing through index funds, the full potential of shareholder engagement to drive change hasn’t been tapped.

Engine No. 1’s new $VOTE ETF promises to change that. To understand why, it helps to understand the mechanics of how shareholders can push for change.

Proxy Voting

Purchasing stock in a company grants you not just a share of its profits, but also the right to influence its decision-making. This process is called “proxy voting,” which can be a powerful tool with the potential to transform the entire economy, company by company.

Publicly traded companies operate like quasi-democracies, accountable to their shareholders. They hold annual meetings, where shareholders can vote on a number of topics. Shareholders who disagree with some aspect of how a company’s business is conducted can engage with management, and if they feel they aren’t being heard, can present an alternate course of action by making a “shareholder proposal.”

If they can persuade a majority of all shareholders to vote in support of the proposal, they can overrule management. When more drastic change is warranted, such “activist” shareholders can seek to replace management entirely, by nominating their own candidates for the company’s board of directors.

Shareholder Activism: Social Change Through Engagement

Social change via shareholder activism has a storied history. As early as 1951, in a seminal case, civil rights leader James Peck took the fight to the proxy arena, by filing a shareholder proposal with the Greyhound Corporation, recommending that the bus operator abolish segregated seating in the South.

Seventy years later, on May 26, 2021, activist hedge fund Engine No. 1 stunned the corporate world by winning a proxy battle against the current leadership of ExxonMobil, persuading a coalition of shareholders to elect three of its own candidates to the board—the first ever climate-centered case for change.

Engine No. 1 argued that Exxon’s share price was underperforming that of its peers because the company was unprepared for the transition away from fossil fuels. It nominated candidates for the board that would push the oil giant to embrace renewable energy. Against all odds, holding just .02% of Exxon’s stock, Engine No. 1 prevailed.

Corporate boardrooms across the entire S&P 500 are buzzing, asking what the Exxon coup means for them. Where will environmentally and socially conscious investors strike next? These questions are warranted: The Exxon campaign was a first, but it surely won’t be the last.

“Index Activism”: Bringing Power To The People

Individual investors are increasingly aware of proxy voting as a domain by which their portfolios can channel their values. In a recent Morningstar report, 61% of those surveyed said that sustainability should be factored into how votes attributable to their 401(k)s are cast.

However, most Americans, including Betterment customers, don’t buy stock of companies like Greyhound or Exxon directly, but through index funds.

When you buy a share of an index fund, the index fund manager uses your money to buy stocks of companies on your behalf. As a shareholder of the fund, you benefit financially when these underlying stocks rise in value, but the index fund is technically the shareholder of each individual company, and holds the right to participate in each company’s proxy voting process.

As more investors tell the industry that they want their dollars to advance sustainable business practices, the Big Three have been feeling the pressure to work these preferences into their proxy voting practices.

This year, they are showing some signs of change. Notably, the Big Three ultimately joined Engine No. 1’s coalition, which could not have prevailed against Exxon without their support. However, even if the Big Three, who manage trillions on behalf of individual investors, continue to side with the activists, what’s missing is a way for individuals to invest their dollars not just to support these campaigns, but to spearhead them as well.

What Makes $VOTE Special

Activist shareholder campaigns are generally led by hedge funds, and what happened with Exxon was no exception. However, by launching an ETF that anyone can invest in, Engine No. 1 is looking to break that mold.

In 2020, investors poured $50 billion into sustainable index funds—double that of 2019, and ten times that of 2018. The $VOTE ETF should bring even more investors off the sidelines, and into sustainable investing, for two reasons.

First, rather than dilute its efforts, $VOTE intends to spearhead a handful of campaigns, pushing companies to improve their environmental and social practices. A focus on the highest impact, and most powerful narratives, will continue to raise awareness for the power of shareholder activism.

Second, $VOTE is designed for mass adoption, not as a niche strategy. With a management fee of only .05%, and tracking a market cap weighted index, $VOTE is designed to ensure no trade-off to long-term returns. It is also well-suited for those investing for retirement—and as of today, it will make its way into its first ever 401(k) plan, via Betterment for Business.

What Does $VOTE Mean For Investors?

We know that many of our customers want to invest for real impact, especially if they can do so without sacrificing their long-term financial goals. If you’re investing through any of Betterment’s three Socially Responsible Investing portfolios, $VOTE will have a target weight equal to 10% of your exposure to the U.S. stocks.

With $VOTE in your portfolio, you’ll know that your dollars are directly supporting whatever engagements Engine No. 1 launches next. As their subsequent work unfolds, we will be monitoring their efforts, and updating our customers on the impact their investments are driving.

Now that $VOTE exists, anyone—not just Betterment customers—can invest in it, which is a great thing. The bigger it gets, the more it can drive change, and you, as an investor, get to help write the next chapter.

Invest for better
Join Betterment>

Why (And How) Betterment Is Using Julia

Why (And How) Betterment Is Using Julia

At Betterment, we’re using Julia to power the projections and recommendations we provide to help our customers achieve their financial goals. We’ve found it to be a great solution to our own version of the “two-language problem”–the idea that the language in which it is most convenient to write a program is not necessarily the language in which it makes the most sense to run that program. We’re excited to share the approach we took to incorporating it into our stack and the challenges we encountered along the way.

Working behind the scenes, the members of our Quantitative Investing team bring our customers the projections and recommendations they rely on for keeping their goals on-track. These hard-working and talented individuals spend a large portion of their time developing models, researching new investment ideas and maintaining our research libraries. While they’re not engineers, their jobs definitely involve a good amount of coding. Historically, the team has written code mostly in a research environment, implementing proof-of-concept models that are later translated into production code with help from the engineering team.

Recently, however, we’ve invested significant resources in modernizing this research pipeline by converting our codebase from R to Julia and we’re now able to ship updates to our quantitative models quicker, and with less risk of errors being introduced in translation. Currently, Julia powers all the projections shown inside our app, as well as a lot of the advice we provide to our customers. The Julia library we built for this purpose serves around 18 million requests per day, and very efficiently at that.

 

Examples of projections and recommendations at Betterment. Does not reflect any actual portfolio and is not a guarantee of performance.

Why Julia?

At QCon London 2019, Steve Klabnik gave a great talk on how the developers of the Rust programming language view tradeoffs in programming language design. The whole talk is worth a watch, but one idea that really resonated with us is that programming language design—and programming language choice—is a reflection of what the end-users of that language value and not a reflection of the objective superiority of one language over another. Julia is a newer language that looked like a perfect fit for the investing team for a number of reasons:

Speed. If you’ve heard one thing about Julia, it’s probably about it’s blazingly fast performance. For us, speed is important as we need to be able to provide real-time advice to our customers by incorporating their most up-to-date financial scenario in our projections and recommendations. It is also important in our research code where the iterative nature of research means we often have to re-run financial simulations or models multiple times with slight tweaks.Dynamicism. While speed of execution is important, we also require a dynamic language that allows us to test out new ideas and prototype rapidly. Julia ticks the box for this requirement as well by using a just-in-time compiler that accommodates both interactive and non-interactive workflows well. Julia also has a very rich type system where researchers can build prototypes without type declarations, and then later refactoring the code where needed with type declarations for dispatch or clarity. In either case, Julia is usually able to generate performant compiled code that we can run in production.Relevant ecosystem. While the nascency of Julia as a language means that the community and ecosystem is much smaller than those of other languages, we found that the code and community oversamples on the type of libraries that we care about. Julia has excellent support for technical computing and mathematical modelling.

Given these reasons, Julia is the perfect language to serve as a solution to the “two-language problem”. This concept is oft-quoted in Julian circles and is perfectly exemplified by the previous workflow of our team: Investing Subject Matter Experts (SMEs) write domain-specific code that’s solely meant to serve as research code, and that code then has to be translated into some more performant language for use in production. Julia solves this issue by making it very simple to take a piece of research code and refactor it for production use.

Our approach

We decided to build our Julia codebase inside a monorepo, with separate packages for each conceptual project we might work on, such as interest rate models, projections, social security amount calculations and so on. This works well from a development perspective, but we soon faced the question of how best to integrate this code with our production code, which is mostly developed in Ruby. We identified two viable alternatives:

Build a thin web service that will accept HTTP requests, call the underlying Julia functions, and then return a HTTP response.Compile the Julia code into a shared library, and call it directly from Ruby using FFI.

Option 1 is a very common pattern, and actually quite similar to what had been the status quo at Betterment, as most of the projections and recommendation code existed in a JavaScript service.

It may be surprising then to learn that we actually went with Option 2. We were deeply attracted to the idea of being able to fully integration-test our projections and recommendations working within our actual app (i.e. without the complication of a service boundary). Additionally, we wanted an integration that we could spin-up quickly and with low ongoing cost; there’s some fixed cost to getting a FFI-embed working right—but once you do, it’s an exceedingly low cost integration to maintain. Fully-fledged services require infrastructure to run and are (ideally) supported by a full team of engineers.

That said, we recognize the attractive properties of the more well-trodden Option 1 path and believe it could be the right solution in a lot of scenarios (and may become the right solution for us as our usage of Julia continues to evolve).

Implementation

Given how new Julia is, there was minimal literature on true interoperability with other programming languages (particularly high-level languages–Ruby, Python, etc). But we saw that the right building blocks existed to do what we wanted and proceeded with the confidence that it was theoretically possible.

As mentioned earlier, Julia is a just-in-time compiled language, but it’s possible to compile Julia code ahead-of-time using PackageCompiler.jl. We built an additional package into our monorepo whose sole purpose was to expose an API for our Ruby application, as well as compile that exposed code into a C shared library. The code in this package is the glue between our pure Julia functions and the lower level library interface—it’s responsible for defining the functions that will be exported by the shared library and doing any necessary conversions on input/output.

As an example, consider the following simple Julia function which sorts an array of numbers using the insertion sort algorithm:

The insertion sort algorithm implemented in Julia.

In order to be able to expose this in a shared library, we would wrap it like this:

Insertion sort wrapped as C-callable function.

Here we’ve simplified memory management by requiring the caller to allocate memory for the result, and implemented primitive exception handling (see Challenges & Pitfalls below).

On the Ruby end, we built a gem which wraps our Julia library and attaches to it using Ruby-FFI. The gem includes a tiny Julia project with the API library as it’s only dependency. Upon gem installation, we fetch the Julia source and compile it as a native extension.

Attaching to our example function with Ruby-FFI is straightforward:

Ruby FFI binding for insertion sort

From here, we could begin using our function, but it wouldn’t be entirely pleasant to work with–converting an input array to a pointer and processing the result would require some tedious boilerplate. Luckily, we can use Ruby’s powerful metaprogramming abilities to abstract all that away–creating a declarative way to wrap an arbitrary Julia function which results in a familiar and easy-to-use interface for Ruby developers. In practice, that might look something like this:

Abstracted wrapper around Julia insertion sort

Resulting in a function for which the fact that the underlying implementation is in Julia has been completely abstracted away:

Challenges & Pitfalls

Debugging an FFI integration can be challenging; any misconfiguration is likely to result in the dreaded segmentation fault–the cause of which can be difficult to hunt down. Here are a few notes for practitioners about some nuanced issues we ran into, that will hopefully save you some headaches down the line:

The Julia runtime has to be initialized before calling the shared library. When loading the dynamic library (whether through Ruby-FFI or some other invocation of `dlopen`), make sure to pass the flags `RTLD_LAZY` and `RTLD_GLOBAL` (`ffi_lib_flags :lazy, :global` in Ruby-FFI).If embedding your Julia library into a multi-threaded application, you’ll need additional tooling to only initialize and make calls into the Julia library from a single thread, as multiple calls to `jl_init` will error. We use a multi-threaded web server for our production application, and so when we make a call into the Julia shared library, we push that call onto a queue where it gets picked up and performed by a single executor thread which then communicates the result back to the calling thread using a promise object.Memory management–if you’ll be passing anything other than primitive types back from Julia to Ruby (e.g. pointers to more complex objects), you’ll need to take care to ensure the memory containing the data you’re passing back isn’t cleared by the Julia garbage collector prior to being read on the Ruby side. Different approaches are possible. Perhaps the simplest is to have the Ruby side allocate the memory into which the Julia function should write it’s result (and pass the Julia function a pointer to that memory). Alternatively, if you want to actually pass complex objects out, you’ll have to ensure Julia holds a reference to the objects beyond the life of the function, in order to keep them from being garbage collected. And then you’ll probably want to expose a way for Ruby to instruct Julia to clean up that reference (i.e. free the memory) when it’s done with it (Ruby-FFI has good support for triggering a callback when an object goes out-of-scope on the Ruby side).Exception handling–conveying unhandled exceptions across the FFI boundary is generally not possible. This means any unhandled exception occurring in your Julia code will result in a segmentation fault. To avoid this, you’ll probably want to implement catch-all exception handling in your shared library exposed functions that will catch any exceptions that occur and return some context about the error to the caller (minimally, a boolean indicator of success/failure).

Tooling

To simplify development, we use a lot of tooling and infrastructure developed both in-house and by the Julia community.

Since one of the draws of using Julia in the first place is the performance of the code, we make sure to benchmark our code during every pull request for potential performance regressions using the BenchmarkTools.jl package.

To facilitate versioning and sharing of our Julia packages internally (e.g. to share a version of the Ruby-API package with the Ruby gem which wraps it) we also maintain a private package registry. The registry is a separate Github repository, and we use tooling from the Registrator.jl package to register new versions. To process registration events, we maintain a registry server on an EC2 instance provisioned through Terraform, so updates to the configuration are as easy as running a single `terraform apply` command.

Once a new registration event is received, the registry server opens a pull request to the Julia registry. There, we have built in automated testing that resolves the version of the package that is being tested, looks up any reverse dependencies of that package, resolves the compatibility bounds of those packages to see if the newly registered version could lead to a breaking change, and if so, runs the full test suites of the reverse dependencies. By doing this, we can ensure that when we release a patch or minor version of one of our packages, we can ensure that it won’t break any packages that depend on it at registration time. If it would, the user is instead forced to either fix the changes that lead to a downstream breakage, or to modify the registration to be a major version increase.

Takeaways

Though our venture into the Julia world is still relatively young compared to most of the other code at Betterment, we have found Julia to be a perfect fit in solving our two-language problem within the Investing team. Getting the infrastructure into a production-ready format took a bit of tweaking, but we are now starting to realize a lot of the benefits we hoped for when setting out on this journey, including faster development of production ready models, and a clear separation of responsibilities between the SMEs on the Investing team who are best suited for designing and specifying the models, and the engineering team who have the knowledge on how to scale that code into a production-grade library. The switch to Julia has allowed us not only to optimize and speed up our code by multiple orders of magnitude, but also has given us the environment and ecosystem to explore ideas that would simply not be possible in our previous implementations.

Did you miss our previous article…
https://www.toroption.co/?p=231

Three LGBTQ+ Influencers Share Tips For Successful Financial Planning

Three LGBTQ+ Influencers Share Tips For Successful Financial Planning

We sat down with three influencers to pull back the curtain on some of the unique factors of LGBTQ+ financial planning, and what that planning, saving, and investing actually looks like.

CHRISTOPHER RHODES

What’s a financial goal that you’re currently working towards? Or, what’s a financial goal you’re proud of achieving?

Saving for top surgery was probably the largest financial goal I’ve achieved thus far in my life. Top surgery is a huge part of many trans masculine people’s lives, and that surgery was incredibly affirming for me and life changing. My insurance did not cover the procedure so I was left with the full amount to cover on my own, which can be quite daunting.

What tools and habits helped you reach that goal?

I am self-employed and so saving money can be difficult, but the company I run helps trans folks afford gender-affirming surgeries. By the time I was saving money for top surgery we had partnered with five individuals before me to help them reach their financial goals. My brand helped raise about half of the funds I needed for my surgery, and besides that I used my skills to help raise the funds—I did custom art, tattoo designs, and social media work for money. I also was just a lot more conscious about what I was putting away in savings at the time and for what.

Nowadays, my biggest goal is saving for the future: Hopefully saving to buy a house, and I do so by having a specific goal and timeline for the amount of savings I have in my account. By dedicating certain paychecks specifically to paying off debt or savings, versus for spending.

What would you tell your younger self about money?

Money is stressful, and a little bit complicated. I don’t think anyone when they’re younger quite comprehends how expensive being an adult is. But I think I’d tell myself that it’s possible to do what you love and still be able to afford a living— you just have to figure out how to make that work for you, and be responsible and smart about where and how and why you spend your money.

Has your identity influenced your relationship with money in any way? Why or why not?

I do think that in some aspects my relationship with money is definitely different than it would be if I wasn’t trans.

The costs of transitioning add up, between doctor’s visits, blood work, weekly testosterone injections, surgeries, the legal costs of changing my name and gender marker, not even to mention the costs of family planning one day, etc.

I had to account for saving up for things that felt very “adult” starting when I was in my young 20’s.

Start saving for your goals
Join Betterment>

ZOE STOLLER

 

What’s a financial goal you are currently working towards, or what’s one that you’ve already achieved and are really proud of?

I’m officially going to graduate school! I’ve left my 9 to 5 marketing job, and am working more fully as a content creator. I’m saving for graduate school and it’s a lot of work, but I’m confident that I’ll achieve my financial goal. I had known before I decided to enroll that my full time job wasn’t as fulfilling as I wanted it to be, and I recently started making enough money as a content creator to leave. So all the stars aligned, where I was able to leave my job, do content creation full time, and go back to school for my graduate degree.

What habits or tools are helping you reach that goal?

I’ve gotten very into spreadsheets lately—even though I’m not confident with numbers or money. It’s been a year of transition for me to figure out exactly how to keep meticulous track of my income, my big expenses, and my savings. I’ve been trying to be really proactive, financially.

What would you tell your younger self about money?

I was very clueless about money, but I have a lot more knowledge now.

Growing up, I didn’t understand saving, investing, or general money management. I’d tell my younger self that it’s okay not to know those things, but life is about learning and growing, and going on different journeys. Just because younger me wasn’t very financially aware, doesn’t mean that it’s always going to be that way.

And now, I feel much more knowledgeable about money—I’m still learning a lot, but I’m much more confident.

Has your identity influenced your relationship with money? Why or why not?

As I’ve discovered my lesbian and non-binary identities, I’ve definitely thought about how money will play a role in my future. There are so many more expenses that come with having a family or getting pregnant when you’re LGBTQ. I want a family, but I’ll probably have to do fertility treatments or maybe adoption. There are so many added obstacles that require money when you can’t conceive with a partner, so I’ve been thinking about how to best prepare for that in my future. I want to be able to afford that, should I decide it’s in my future.

nything else you’d like to share with us?

Wherever you are in your money and identity journeys, I have full confidence that you will make it through and achieve the goals you’ve set for yourself.

GENVIEVE JAFFE

 

What’s a financial goal that you’re currently working towards? Or, what’s a financial goal you’re proud of achieving?

My wife and I are hoping to build our dream home next year, in 2022. We want to buy in a community around my home, and we want to be able to put down a lot of money. When we bought our first house, we only put down 10% and had to get a PMI. We’d like to not do that this time, so that’s a big financial goal right now.

What tools and habits helped you reach that goal?

We have two different investment accounts that we use for the house fund. One is super safe – not risky at all, because we want to be safe if anything should happen. I also have a moderately aggressive portfolio that I don’t manage myself. When COVID hit, it did take a downturn, so it’s important for us to have half in a safer type of investment. In terms of allocating my money, any time I have money coming in from my business, I put some aside into these accounts. My wife and I also have a 529 plan that we put money in for our kids at the end of every year.

Additionally, my wife is very on top of our expenses and keeping track of our books. Almost every day she goes into all of our accounts to check balances, check for invoices, and double check our credit cards, student loans, etc.

What would you tell your younger self about money?

I grew up with working class parents. They traded money for hours, and that’s not a bad thing, but it’s not the way I wanted to live my life. So I actually got a job as a corporate lawyer and was miserable, but had a really great paycheck. I’d always learned that you work until you can retire and live off your 401K, and it wasn’t until I met my wife, who was an entrepreneur, that I realized that’s not how I had to live my life.

So I’ve done a lot of mindset work around money, and getting rid of that old school belief that money doesn’t grow on trees. I try to really have a good relationship with money and remember that money is also an exchange of energy.

I also just wanted to share that in 2015, I almost had to file for bankruptcy. I was not smart with my money at all. I’d been a corporate lawyer making a very nice, steady paycheck, and when I quit my job, the business that I started actually did very well. But it wasn’t this consistent substantial paycheck I was used to, and I hadn’t changed my habits or my lifestyle. SO I really had to learn quickly to be cognizant of the money that I have, and not rely on the money that I could potentially earn. I did not have to file bankruptcy, thank goodness. But, that fear is something that still lives within me—and now it’s really about being conscious of the money we have and the money we’re spending.

Has your identity influenced your relationship with money in any way? Why or why not?

We spent $50K+ having our children. I don’t say this to freak anyone out but to help prepare you for potential costs that you could incur growing your family as an LGTBQ+ individual / couple / throuple, etc.

We had no idea how much money we were about to drop when we started to grow our family. Our path to pregnancy wasn’t super straightforward—we ended up doing 3 intrauterine inseminations (IUI), two egg retrievals, and three embryo transfers. Insurance didn’t cover in vitro fertilization (IVF), stimulation meds (about $5K), egg retrieval ($11K), or transfer ($3K). We also had to buy sperm (they’re about $1,000 per vial), go through tons of testing, and we each had to have surgery.

Financially planning for a family is something that I stress people should start early. Seriously, ask for people to contribute to a baby fund for your engagement and wedding. Trust me, no one needs fancy dish-ware. Everyone loves babies and it’s an incredible way to make everyone feel part of your journey!

Begin your financial journey
Join Betterment>

If you’re interested in joining our team, check out the Betterment careers page! We’re always looking for passionate candidates to join our company.

Did you miss our previous article…
https://www.toroption.co/?p=226

Introducing the RIA Tech Suite

Introducing the RIA Tech Suite

The RIA Tech Suite brings together complementary technology platforms to help automate critical back-office tasks for advisors.

Along with RIA in a Box®, RightCapital, and Wealthbox, Betterment for Advisors is excited to introduce the RIA Tech Suite a set of services and tools that advisors can use to help automate and streamline back-office tasks.

Why should firms utilize the RIA Tech Suite?

Together, these intuitive and complementary tech tools can streamline everyday practice management, giving you more time to acquire new business and to provide a better experience for your current clients.

Additionally, the RIA Tech Suite includes discounted pricing for firms that adopt two or more of the services — a discount that can save an average RIA firm up to $3,100 in their first year.

Here are the tools available on the RIA Tech Suite:

Betterment for Advisors – A leading digital-first wealth management platform that leverages smart-tax technology.RIA in a Box® – Compliance, cybersecurity, and operational software for investment advisors.RightCapital – Wealth planning software that makes planning easier and more powerful for advisors and their clients.Wealthbox – A leading CRM software application that helps advisors manage their clients and collaborate with their team.

The RIA Tech Suite can foster growth for tech-centric firms that are focused on efficient client service and expanding their books of business.

“Our goal at Betterment for Advisors is to empower advisors to grow their businesses and build deeper client relationships,” writes Jon Mauney, General Manager of Betterment for Advisors. “The four companies that are part of the RIA Tech Suite all share this objective with a common approach to their services: providing beautifully designed, easy-to-use, and powerful tools for advisors and their clients.”

The RIA Tech Suite is now available to all registered investment advisors. You can learn more and sign up for this offering by visiting https://riatechsuite.com

Betterment for Advisors is a member of the coalition known as RIA Tech Suite alongside three other platforms: RIA in a Box, RightCapital, and Wealthbox. The four companies are offering advisors who become new clients of two or more members of RIA Tech Suite, discounts on services provided by such participating companies. Betterment and aforementioned firms are not under common ownership or otherwise related entities, and no compensation has been exchanged between the members of RIA Tech Suite for the purposes of entering into this coalition. Terms subject to change. This offering is for investment professionals only and is not intended for use by private investors.
3100 USD is an estimate of the maximum amount saved on the annual cost for combined subscription fees across all four services. Calculation assumes the average of weighted monthly rates offered across all four services, inclusive of onboarding fees and then applies a 15% discount from each. Discount rate of 15% per company is activated upon engagement of a minimum of two companies. Actual dollar amount saved may vary.

ny links provided to other websites are offered as a matter of convenience and are not intended to imply that Betterment or its authors endorse, sponsor, promote, and/or are affiliated with the owners of or participants in those sites, unless stated otherwise.

Did you miss our previous article…
https://www.toroption.co/?p=223