Support

When something goes wrong.

Most problems here are one of a handful of specific errors, so the common ones are written out below with what actually causes them. If yours isn't listed, email.

Get in touch

support@hulage.in

Include the exact error text and the ticker, date range, and strategy you ran. If the run saved, the run ID from History is enough on its own — every parameter is stored with it.

A solo project, not a staffed desk. Expect a reply in days, not hours.

Errors you might hit

These are the messages the API actually returns, and what each one means.

No data found for XYZ

The symbol didn't resolve with the data provider. Symbols follow Yahoo Finance conventions, which differ from some brokers: class shares use a hyphen (BRK-B, not BRK.B), and non-US listings need their exchange suffix (RELIANCE.NS, VOD.L). A delisted ticker returns nothing for date ranges after it stopped trading.

Only N trading days returned … not enough history for the chosen indicator and sizing windows.

Every indicator needs a warm-up period before it can produce a signal — a 200-day moving average has no value until day 200 — and volatility-targeted sizing adds its own lookback on top. Your date range is shorter than the sum. Widen the range or shorten the windows. Note that a young stock truncates the range regardless of what you asked for: a 2018 start date on a company that listed in 2021 gives you 2021 onward.

You have used all N runs on the free plan this month.

A monthly quota, not a speed limit. It resets at the start of the next calendar month, counted in UTC. The current allowance is on the pricing page, which reads it from the API rather than repeating it — Pro removes the cap entirely.

Walk-forward validation and the permutation test are Pro features.

A single validation run sweeps a whole parameter grid and then reshuffles the signals hundreds of times — it costs far more compute than one backtest, which is why it sits behind the paid plan rather than the quota.

Rate limit reached for … Try again in N second(s).

A short burst limit measured over the last minute, separate from the monthly quota. It means slow down, not upgrade. Waiting the stated number of seconds clears it.

Your account has been suspended.

An administrator has deactivated the account. Email us — it is reversible.

Questions about the results

Why are my numbers worse than the same strategy elsewhere?

Usually because this engine refuses several shortcuts that flatter a backtest. Signals are shifted one bar before they are traded, so a signal computed from today's close is acted on tomorrow rather than at the price that generated it. Stops are evaluated at the close, not filled at the trigger price — if a bar gaps 10% through a 5% stop, you take the full 10%. Transaction costs are charged in proportion to how much the position moved.

Together those are worth a lot of apparent performance. The docs explain each one.

Where does the price data come from?

Daily closing prices from Yahoo Finance, split- and dividend-adjusted. There is no intraday data, so the shortest holding period any strategy here can express is one day.

My strategy shows a great return. Should I trade it?

Not on the strength of one backtest. A result on a single ticker over a single period is one sample, and parameters chosen because they looked good on that sample are fitted to it by definition. Run walk-forward validation, which scores the same parameters on data they were never fitted to, and the permutation test, which checks whether your entry timing beat random entries.

Nothing here is investment advice, and no backtest models liquidity, slippage on size, borrow costs for shorts, or tax.

Can I export the results?

Yes — the dashboard has CSV export for the equity curve and the trade list, and the run configuration is encoded in the page URL, so copying the address bar shares an exact reproducible setup.

Account, billing, and data

What do you store?

Your email and display name, and for each run its configuration and summary metrics. Equity curves and drawdown series are not stored — they are recomputed from the parameters whenever you open a saved run.

How do I cancel, or delete my account?

Email us and we'll do both. There is no self-serve delete button yet — saying so is more useful than pointing you at one that doesn't exist. Cancelling leaves your saved runs readable on the free plan; deletion removes the account and every run with it, and cannot be undone.

I never got the verification email.

Check spam first — it comes from a Firebase address, which filters often mistrust. The banner at the top of the dashboard resends it, with a one-minute wait between attempts. Verification isn't required to run backtests; it matters because password resets go to that address.