· Acubic Research · 9 min read
What Risk Constraints Does Acubic Apply?
Key takeaways
- Acubic applies all constraints as hard bounds on the optimizer, not as preferences it can trade away for a better score. The proposal you see is the only output that satisfies every limit you set.
- Risk level sets the primary per-asset concentration cap: 10% for conservative, 15% for moderate, 25% for aggressive. These caps apply at every scheduled rebalance, not just the first build.
- Position size floor and ceiling let you override the risk-level cap in one direction only: you can tighten it, but you cannot loosen it. The stricter of the two limits always wins.
- Universe constraints (asset class, region, sector) remove assets from consideration entirely before any ranking or weighting begins. A filtered-out asset cannot appear in the proposal regardless of how it would rank.
- Small portfolios receive adjusted caps so the arithmetic remains feasible: with n holdings, the per-asset maximum rises to 1.5/n, 2/n, or 3/n (conservative, moderate, aggressive) whenever that figure exceeds the base cap.
When you look at an Acubic portfolio proposal, the weights you see are not the optimizer's unconstrained preference. They are the result of a construction run that was bounded on every side by the limits you set during the quiz and the risk level you chose. This article explains what those bounds are, how they interact, and what a proposal can tell you about the constraint set that produced it.
Hard bounds, not soft preferences
Before going through the individual constraints, the design principle matters. The methodology page states it directly: constraints in Acubic's construction process are applied as bounds on the optimizer, not as penalties in the objective.
The distinction has practical consequences. A penalty approach allows the optimizer to violate a preference when doing so improves the overall score. The optimizer weighs the cost of violating the preference against the benefit of a better allocation and sometimes decides the violation is worth it. A bounds approach forecloses that trade. The constraint is a hard limit. The optimizer finds the best allocation it can within the bounds; if it cannot satisfy the bounds exactly, it returns the nearest feasible solution rather than a partial result.
This means the risk-level cap is not a target or a guideline. If the optimizer would otherwise put 30% into a single name, the cap cuts it to the allowed maximum, regardless of what the correlation structure or ranking signal would suggest. The complete guide to how Acubic works frames this as the design principle that makes the construction repeatable: because constraints are bounds rather than preferences, two runs with the same inputs and the same risk level will produce outputs that satisfy the same limits.
Risk-level concentration caps
The most consequential single constraint is the per-asset concentration cap, set by your risk level. Acubic maps three risk levels to three cap values:
- Conservative: maximum 10% per holding
- Moderate: maximum 15% per holding
- Aggressive: maximum 25% per holding
These figures are the upper bound on any single position in the portfolio, expressed as a percentage of total capital. An optimizer running under a conservative profile cannot assign more than 10% to any single name, regardless of how that name ranks or how strongly its correlation structure would otherwise suggest a heavier weight.
The caps adjust for small portfolios to keep the arithmetic feasible. With n holdings, the per-asset maximum rises to the higher of the base cap or a formula value: 1.5 divided by n for conservative, 2 divided by n for moderate, 3 divided by n for aggressive (expressed as a percentage). With eight holdings, for example, the effective caps work out to 18.75% for conservative, 25% for moderate, and 37.5% for aggressive. Without this adjustment, a conservative portfolio with eight holdings would face a 10% cap that allows at most 80% total allocation, which is arithmetically infeasible. The run relaxes the cap to the minimum value that allows the full capital to be distributed across the target holding count.
These caps apply at every scheduled rebalance, not just when the portfolio is first built. Each time the construction process runs, it re-derives target weights under the same constraints. If a holding has grown to 18% of the portfolio through price appreciation, the next rebalance will bring it back to the cap. That is the maintenance function the constraint system enables: not just building to a limit once, but returning to it on schedule. The article on what the risk quiz actually determines walks through each quiz input and its effect on the construction process.
Position size floor and ceiling
In addition to the risk-level cap, Intermediate and Advanced users can set a minimum weight floor and a maximum weight ceiling per position directly. Beginners see default values instead: 1% minimum and 10% maximum per holding. These interact with the risk-level cap in a specific way.
The minimum weight floor ensures no position in the output is too small to be operationally meaningful. A holding at 0.3% of a portfolio may pass the optimizer's arithmetic but represent a trade so small it generates more friction than value. The floor removes that outcome by requiring the optimizer to assign at least a specified weight to any holding it includes.
The maximum weight ceiling is a second upper bound on any single position. It applies alongside the risk-level cap with a single rule: the stricter of the two limits wins. If your manually set ceiling is 8% and the risk-level cap for your profile is 15%, your ceiling governs, because 8% is the tighter constraint. If the risk-level cap is 10% and your ceiling is 20%, the cap governs.
This means a user can always impose tighter constraints than their risk level alone would produce. A conservative profile with a 7% manual ceiling produces a more evenly distributed portfolio than the 10% risk-level cap alone would suggest. What a user cannot do is use the manual ceiling to loosen the risk-level constraint: setting a ceiling of 30% on a conservative profile does not raise the effective cap above 10%, because the risk-level bound applies independently.
For Beginners who do not see the position-sizing sliders, the defaults apply throughout: 15 to 25 holdings, a 1% floor, and a 10% ceiling. That 10% ceiling is already tighter than the 15% risk-level cap that corresponds to a moderate profile, so for a Beginner with the default moderate recommendation, the user ceiling governs rather than the risk-level cap.
Asset count range
Asset count is a structural constraint separate from concentration caps. Intermediate and Advanced users choose a target range for the number of holdings the optimizer should include:
- Concentrated: 5 to 10 holdings
- Balanced: 15 to 25 holdings
- Diversified: 25 to 40 holdings
- Ultra-wide: 40 to 50 holdings
The optimizer stays within this band. A Concentrated portfolio with a 10% cap has a very different constraint structure than a Diversified portfolio with the same cap: the narrow count means the small-portfolio adjustment formula is more likely to raise the effective cap above the base value, while the wide count gives the optimizer more material to distribute capital across.
Beginners do not see this input. The default range of 15 to 25 holdings applies automatically, producing a reasonably diversified first proposal for a reader who has not yet expressed a preference on portfolio breadth.
Eligible universe constraints
Risk-level caps and position sizing operate on the holdings that have already been selected as eligible. Which holdings are eligible at all is settled by a separate set of constraints applied earlier in the process, before any ranking or weighting begins.
Three quiz inputs define the eligible universe:
- Asset classes determine which types of instrument can enter the portfolio: stocks, ETFs, commodities, bonds, and crypto. An empty selection keeps all classes open; a subset restricts the universe to those types only.
- Regions narrow by country of risk across five geographic groups: North America, Latin America, Europe, Asia-Pacific, and Middle East and Africa. An empty selection keeps all regions open.
- Sectors narrow by industry classification across eleven options, including Technology, Healthcare, Financials, and Energy.
These filters are applied to the full starting universe before screening or ranking begins. A ticker that falls outside a selected asset class or region is not downweighted: it is removed entirely and cannot appear in the proposal regardless of how it would rank. This is what the article on asset selection means when it describes the screening stage: the ranking and allocation steps only ever see candidates that have already passed the eligibility filters.
A narrow universe produces a more concentrated proposal because the optimizer has fewer independent holdings to spread risk across. An investor who restricts to a single sector and a single region is asking the optimizer to build a diversified portfolio from a set of assets that may all move together. The concentration caps still apply in that scenario, but the diversification the caps are designed to enforce has limited material to work with.
The liquidity floor
One constraint operates without any user input. Every asset in the starting universe must exceed a minimum median daily dollar volume as of the ranking date. This liquidity floor is applied by every ranking method automatically, before the universe filters above. An asset that falls below it is excluded from consideration entirely.
The floor exists so that any holding the optimizer selects can actually be traded at a reasonable size. A portfolio that includes a highly illiquid name looks fine on paper but becomes a problem at execution time, when the order is larger than the market for that name can absorb without moving the price. The floor removes that class of holding before any other logic runs, so the constraint system never has to manage a position the broker cannot fill.
Universe filters (Intermediate and Advanced users)
Intermediate and Advanced users can apply additional company-level rules on top of the eligibility constraints above. These filters run before screening, ranking, and allocation. A company that fails a filter is excluded from the entire run, regardless of how it would rank otherwise.
The methodology page documents that these filters are layered on top of the baseline liquidity floor rather than replacing it. They let a user narrow the candidate universe by financial metrics or other criteria specific to their strategy, in addition to the sector, region, and asset class filters that all experience levels share.
What the proposal tells you about the constraints
The proposal you see after a build is a direct record of the constraint set that produced it. If a holding appears at exactly 10% and your risk level is conservative, it is at its concentration cap: the optimizer would have allocated it more capital, but the cap prevented it. If no asset exceeds 15% and you chose moderate risk, every position is at or below its maximum. If a holding you expected is absent, the most likely explanations are a universe constraint that removed it before ranking, or a minimum weight floor that the optimizer could not satisfy for that name given the other constraints already binding.
The guide on reading an Acubic portfolio proposal explains what an outsized weight on a single name usually indicates about the constraint structure the optimizer was working within, and why a holding with a lower-than-expected weight is not necessarily a signal to change the asset choice.
Changing the constraints
No constraint is permanent. Any input from the quiz can be adjusted and the build run again. Changing the risk level changes the concentration cap and, for Beginner and Intermediate users, updates the algorithm recommendation. Changing the universe produces a different candidate pool. Widening position sizing allows the optimizer more latitude; tightening it forces a more even distribution.
Changes take effect on the next build or the next scheduled rebalance. Each rebalance runs the full construction process from the current data under the current constraint settings, so a change you make today applies to every rebalance going forward until you change it again. The allocation methods that run within these constraints, including hierarchical risk parity and its alternatives, are explained in why Acubic uses hierarchical risk parity.
The AI portfolio builder is where you start a new proposal or adjust an existing strategy. Build first, inspect the weights against the constraints described here, and connect a broker only when the proposal reflects the limits you actually want.
Acubic does not promise returns and cannot predict short-term market moves. The constraint system ensures the construction process respects your stated limits: not that any particular level of return will follow from them.
Want to put this into practice? Explore the Acubic guides or see how the AI portfolio builder turns constraints into a structured portfolio.