EpochOMS is a professional-grade Order Management System with integrated risk analytics, AI-powered signal generation, and automated trading capabilities. This guide covers every feature of the platform in detail.
PAPER ACCOUNT) to switch between paper and live accounts. Always verify you are on Paper before testing.EpochOMS is your trading command centre — not your broker. Understanding this distinction is important before you connect your account.
Alpaca retail is completely free — $0 monthly fee, $0 commission on US stocks and ETFs. You open an Alpaca account in 5 minutes and it costs you nothing ongoing. IBKR has no subscription fee; you pay a small commission per trade only when you trade.
The real comparison is not "EpochOMS + broker vs just EpochOMS." It is EpochOMS against the fragmented alternative:
| Tool (without EpochOMS) | Monthly cost | What it covers |
|---|---|---|
| TradingView Pro | ~£25 | Charts and screener only |
| Portfolio analytics (Sharesight, etc.) | ~£20 | Holdings tracking only |
| Backtesting tool (Quantconnect, etc.) | ~£30 | Strategy testing only |
| Risk management | £50–200+ | Institutional tools, not retail |
| Total | £125–275/mo | Still less capable |
| EpochOMS Trader + free Alpaca | £49/mo | All of the above — integrated, automated |
UK and US regulation requires a licensed broker to hold client funds. EpochOMS is analytical infrastructure — the same model as MetaTrader 4, Bloomberg Terminal, and TradingView, all of which operate alongside a broker. Your capital sits at a regulated broker at all times. EpochOMS never touches your money directly.
Think of your broker as your bank account. You don't call your bank a "second subscription" when you use accounting software. Your broker is the vault; EpochOMS is the trading desk built on top of it.
The top strip of the dashboard contains several controls. Here is what each one does.
| Element | What it does |
|---|---|
| ☰ Hamburger Menu | Opens the side navigation panel. Groups all secondary pages: Reports, Compliance, Analytics & Tools, Preferences, Admin. See "Navigation — Hamburger Menu Groups" below. |
| 🔔 Bell / Notifications | Shows recent system alerts — price breaches, order fills, risk limit warnings, and agent trade notifications. A coloured dot appears on the bell when there are unread alerts. Click to open the alert drawer. |
| Account Chip (e.g. PAPER ACCOUNT) | Displays your currently active account. Click to open the account switcher. You can switch between Paper Trading and Live accounts. The chip turns amber when on a live account as a safety reminder. |
| OPEN / CLOSED Market Status | Shows whether the US stock market is currently open. Green = open for regular trading (09:30–16:00 ET). Red = market closed. Amber = pre-market or after-hours session active. |
| ● Agent Status Dot | Green dot = the trading agent is running and healthy. Grey dot = agent is idle (between scheduled runs). Red dot = agent error — check the agent log in the AI & Auto section. |
The watchlist is your personal list of tickers you track closely. It appears across the Screener, Signals table, and Portfolio sections, making it your primary universe for signal generation and monitoring.
Click the ☰ icon (top-left of the dashboard) to open the slide-out navigation panel. It is organised into collapsible accordion groups.
Each group expands and collapses independently. The active page is highlighted with an accent border. Groups you don't have permission to access are greyed out — contact your admin to request access.
The main dashboard is organised into collapsible accordion sections. Click any section header to expand or collapse it. Each section can be toggled on or off from Settings → Widget Visibility.
| Group | What it contains |
|---|---|
| Overview | KPI metric cards (10), Equity Curve, Daily P&L chart, Benchmark comparison, Drawdown from Peak chart |
| Portfolio | Holdings table (with ESG, star, company), Sector allocation pie, P&L summary, Pending orders |
| Fixed Income | Bond Portfolio (coupon, maturity, YTM, duration, credit rating), Credit Spreads chart (IG OAS, HY OAS, EM Spread) |
| Markets | Order Flow Imbalance (7-day buy/sell signal bias), FX Currency Exposure (portfolio by currency in USD, with 1-day rate change and 1% portfolio impact per currency) |
| Analytics | Drawdown Waterfall (max & current drawdown by position), Beta attribution, Scenario analysis |
| Alternatives | Private Assets (PE, VC, real estate, hedge funds, private credit — manually tracked from GP quarterly statements). Three widgets: holdings table with MOIC/TVPI/DPI/IRR, allocation donut by asset class, vintage year TVPI chart. Section is hidden by default — open it when you have real LP positions. |
| News & Events | News feed with AI sentiment badges, Corporate Actions calendar (earnings & dividends, 60-day lookahead), Dividend Income Tracker (annual income by position, monthly bar chart, yield by holding) |
| Order History | All orders with star/fav filter, company name column, search toolbar |
| Signals | Latest trading signals table, Recent trades table |
| AI & Auto | Claude AI chat, Strategy profile, Agent run log |
EpochOMS includes a built-in AI chat powered by Claude Sonnet. Access it from the AI & Auto section at the bottom of the main dashboard. The panel is always visible — scroll down past the Signals table to find it.
The AI assistant has read-only access to your current positions, P&L, recent orders, and risk metrics. It cannot place orders on your behalf — any trade action must be submitted manually through the New Order Panel.
The Orders tab shows your complete order history with real-time status updates. Every order placed — manually or by the automated agent — appears here.
The New Order Panel (NOP) lives on the RIGHT side of the main dashboard screen. It is always visible — you do not need to navigate away from the dashboard to place a trade. Scroll right on smaller screens if it is not immediately visible.
AAPL, MSFT, TSLA). The system fetches the live quote instantly.Before you submit any order, the system runs an automatic pre-trade check and shows the results in the estimate bar beneath the order form.
| Gauge | What it means |
|---|---|
| Est. Value | Quantity × current market price. This is the notional cost of the trade, not cash required (which may differ for margin accounts). |
| Commission | Estimated brokerage fee. EpochOMS uses a simulated zero-commission model in paper mode. Live mode fees depend on your broker configuration. |
| Concentration | What % of your total portfolio this position would represent after the trade. A warning appears if the resulting position exceeds 20% of portfolio value. |
| Market Impact | Estimated price slippage for large orders relative to average daily volume. Shown for orders exceeding 1% of ADV. |
| Requires Approval | "Yes" appears (in amber) when the order value exceeds $10,000. The order will be placed in PENDING APPROVAL status until a Risk Manager reviews and approves it. |
Each order in the Orders tab has a status badge. Here is what each status means.
| Time | Ticker | Side | Type | Qty | Price | Value | Status | Source |
|---|---|---|---|---|---|---|---|---|
| 14:02:31 | AAPL | BUY | MARKET | 50 | $189.20 | $9,460 | FILLED | AGENT |
| 14:02:29 | MSFT | BUY | LIMIT | 30 | $415.00 | $12,450 | PEND APPR | AGENT |
| 11:45:07 | TSLA | SELL | MARKET | 25 | $228.40 | $5,710 | FILLED | MANUAL |
| 09:31:22 | NVDA | BUY | STOP-LIM | 10 | $875.00 | $8,750 | REJECTED | MANUAL |
The Source column tells you whether the order was placed by the automated trading agent (AGENT) or by a human trader (MANUAL). This is important for audit and compliance purposes.
| Type | When to use |
|---|---|
| MARKET | You want to execute immediately at the best available price. Use for highly liquid stocks where slippage is minimal. Avoid for illiquid names or large quantities. |
| LIMIT | You want to buy at or below a specific price (or sell at or above it). The order may not fill if the market never reaches your price. |
| STOP | A market order that activates only when the stock hits your stop price. Commonly used as a stop-loss to exit a losing position automatically. |
| STOP-LIMIT | Like a stop, but instead of becoming a market order, it becomes a limit order at your specified limit price. Gives price control but risks non-fill if the stock gaps through your limit. |
Before you trade, estimate what an order will cost to execute — the spread you cross, the market impact of your size, and the timing risk of working it over time — and compare strategies (market, limit, TWAP, VWAP, implementation shortfall) side by side in basis points and dollars. It also shows your order as a percentage of average daily volume. These are model-based estimates, not live order-book figures.
Build up a list of orders in a staging area, each with its estimated cost and a compliance pre-check, review them together, then release them to execution in one step. “Arm for open” releases paper orders automatically when the market opens; live accounts always require manual confirmation.
Build a list of legs (each its own ticker, side and quantity) and execute them in one click into your active account. Use Import from Model Rebalance to turn your model’s drift into a ready-made basket. Each leg is checked against the account’s mandate and the risk floor; the status of every leg is shown after execution. Paper accounts book instantly; LIVE accounts ask you to confirm first.
Place a single order for one ticker and split it across several client accounts, each booked into its own portfolio and gated by its own mandate. Choose how the block is divided, hit Preview Allocation to see the split before committing, then Execute.
The Portfolio tab shows your current holdings, P&L breakdown, sector allocation, and position-level metrics. It is the primary view for understanding what you own and how it is performing.
| Ticker | Sector | Qty | Avg Cost | Last | MktVal | Unrealised P&L | % Port | Beta |
|---|---|---|---|---|---|---|---|---|
| AAPL | Tech | 150 | $172.40 | $189.20 | $28,380 | +$2,520 (+9.8%) | 10.0% | 1.12 |
| MSFT | Tech | 80 | $390.10 | $415.00 | $33,200 | +$1,992 (+6.4%) | 11.7% | 0.94 |
| TSLA | Cons. Discr. | 50 | $250.00 | $228.40 | $11,420 | -$1,080 (-8.6%) | 4.0% | 2.04 |
| JNJ | Healthcare | 60 | $155.80 | $162.40 | $9,744 | +$396 (+4.2%) | 3.4% | 0.58 |
| Column | What it means |
|---|---|
| Avg Cost | Your volume-weighted average purchase price across all fills for this position. This is your cost basis per share. |
| Last | Most recent traded price (real-time during market hours, 15-min delayed outside hours). |
| Mkt Val | Quantity × Last price. The current market value of your holding. |
| Unrealised P&L | (Last − Avg Cost) × Quantity. Profit or loss if you were to close the position right now. Only becomes "realised" when you actually sell. |
| % Port | This position's market value as a percentage of total portfolio value. Positions above 20% trigger a soft concentration warning. |
| Beta | How much the stock moves relative to the S&P 500. Beta 1.0 = moves with the market. Beta 2.0 = moves twice as much. Beta 0.5 = moves half as much. Negative beta = moves opposite to the market. |
Below the positions table, a bar chart shows your sector weights versus the S&P 500 benchmark. Sectors where you are significantly overweight (>10 percentage points above benchmark) are highlighted in amber.
A model portfolio is your target allocation — the weights you want each position to represent as a percentage of total portfolio value. Drift tracking continuously measures how far your actual holdings have deviated from those targets, turning EpochOMS from a trade recorder into a disciplined portfolio manager.
| ☆ | Ticker | Company | Target % | Actual % | Drift | Mkt Value | Status |
|---|---|---|---|---|---|---|---|
| ★ | AAPL | Apple Inc | 20.0% | 23.4% | +3.4% | $23,400 | WARN |
| ☆ | MSFT | Microsoft | 15.0% | 8.1% | −6.9% | $8,100 | BREACH |
| ☆ | JNJ | Johnson & Johnson | 10.0% | 9.8% | −0.2% | $9,800 | OK |
| Column | What it means |
|---|---|
| Target % | The weight you assigned this ticker when building the model. |
| Actual % | This position's current market value as a percentage of total portfolio value (holdings + cash). Uses live prices where available, last-known price otherwise. |
| Drift | Actual % minus Target %. Positive = position has grown larger than planned (overweight). Negative = position has shrunk below target (underweight). |
| Status | OK — within threshold. WARN — past 50% of threshold (early signal). BREACH — threshold exceeded, rebalancing required. |
The Rebalancing Engine is the second widget in the Model Portfolio group. It reads your active model’s target allocations and calculates the exact set of trades needed to bring your portfolio back to those targets right now.
Unlike a simple drift alert, the engine gives you a complete, actionable trade list with quantities, estimated values, sequencing, and risk flags — built to an institutional standard.
| Feature | Institutional platforms | EpochOMS |
|---|---|---|
| Delta trade calculation | ✓ | ✓ |
| Whole-share rounding | ✓ | ✓ |
| Minimum trade size filter | ✓ ($500 typical) | ✓ ($50) |
| Sell-before-buy sequencing | ✓ | ✓ |
| Cash sufficiency check | ✓ | ✓ |
| Wash-sale risk flag | ✓ | ✓ |
| Post-rebalance weight preview | ✓ | ✓ |
| Per-row trade selection | ✓ | ✓ |
| Tax-lot selection (FIFO/LIFO/spec ID) | ✓ | — (requires broker connectivity) |
| ADV liquidity check | ✓ | — (future) |
| Multi-account netting | ✓ | — (future) |
| Column | What it means |
|---|---|
| ACTION | BUY = you are underweight this position. SELL = you are overweight. |
| Current Qty | Shares you hold right now. |
| Target Qty | Shares you need to hold to hit your target weight at current market price. Calculated as floor(portfolio_value × target% ÷ price) — always whole shares. |
| Delta | The number of shares to buy or sell. This is what gets submitted as the order quantity. |
| Price | Current market price used for the calculation. Live price if available, last-known price otherwise. |
| Est Value | Delta × Price. The estimated cash value of this trade. |
| Post-Balance % | After this trade executes, what percentage of your portfolio this position will represent. Should equal (or very closely approximate) the target weight. |
| ⚠ | Wash-sale risk flag. Shown on SELL rows where the current market price is below your average cost. Selling these positions realises a loss. If you repurchase the same security within 30 days, the loss is disallowed for tax purposes. |
Sells always execute before buys. This matches the standard institutional approach: proceeds from sells are used to fund purchases, minimising the need to draw on cash reserves. The engine calculates your cash shortfall upfront so you can decide whether to proceed with all trades or exclude some buys to stay within your available cash.
The Risk tab provides a comprehensive view of your portfolio's risk exposure across multiple dimensions: concentration, volatility, factor exposure, drawdown, and correlation.
| Metric | What it means and when to act |
|---|---|
| VaR (95%, 1D) | Value at Risk — the maximum loss you would expect to suffer on 95% of trading days. If VaR is $4,820, there is a 5% chance of losing more than $4,820 in a single day. If VaR is rising, your portfolio volatility is increasing. |
| Max Drawdown | The largest peak-to-trough decline over the period. A -3.2% MTD drawdown means your portfolio is currently 3.2% below its highest point this month. Drawdowns above 10% typically trigger a review meeting. |
| Portfolio Beta | The portfolio's sensitivity to the S&P 500. Beta 0.87 means if the S&P falls 1%, your portfolio would be expected to fall ~0.87%. Below 1.0 = defensive posture. Above 1.0 = aggressive. |
| Sharpe Ratio | Return per unit of risk (standard deviation). Above 1.0 is good. Above 2.0 is excellent. Below 0 means you are taking risk without being compensated by returns. |
| Sortino Ratio | Like Sharpe but only penalises downside volatility (ignores upside swings). More relevant for trading strategies. Above 1.5 is considered good. |
The heatmap below the metrics shows position concentration by ticker and by sector. Cells turn amber when a single position exceeds 15% of portfolio, and red when it exceeds 25%.
The correlation matrix shows how your positions move relative to each other. Highly correlated positions (above 0.8) do not provide true diversification — when one falls, the other will likely fall too. Aim for a portfolio where most pairs are below 0.6.
High (>0.7) Moderate (0.4–0.7) Low (<0.4)
| Limit | Soft Warning | Hard Limit | Action at Hard Limit |
|---|---|---|---|
| Single Position | 20% of portfolio | 30% of portfolio | Order rejected by pre-trade check |
| Single Sector | 40% of portfolio | 60% of portfolio | Order requires approval regardless of size |
| Daily Loss | 2% of portfolio | 5% of portfolio | All new orders blocked until next day |
| Order Value | — | $10,000 per order | Order goes to Pending Approval queue |
The Screener lets you filter and rank instruments from your watchlist or the full 547-instrument universe (S&P 500, NASDAQ 100, ETFs, international ADRs) based on technical, fundamental, and momentum criteria.
| Symbol | Price | RSI | MA20 | P/E | Mom 20D | Score | Signal |
|---|---|---|---|---|---|---|---|
| NVDA | $875.40 | 72.4 | Above | 34.2 | +18.4% | 91 | BUY |
| AAPL | $189.20 | 58.1 | Above | 28.6 | +7.2% | 78 | BUY |
| AMZN | $184.60 | 61.3 | Above | 40.1 | +9.8% | 74 | BUY |
| META | $492.30 | 55.2 | Above | 24.8 | +5.1% | 62 | HOLD |
| INTC | $30.20 | 28.4 | Below | N/A | -14.2% | 21 | SELL |
| Column | What it means |
|---|---|
| Symbol | Stock ticker abbreviation — the unique identifier used on exchanges (e.g. AAPL = Apple Inc.). |
| Price | Last traded price. Real-time during market hours (09:30–16:00 ET), 15-minute delayed outside market hours. |
| RSI | Relative Strength Index (0–100). Below 30 = oversold (potential buy signal). Above 70 = overbought (potential sell signal). Between 30–70 = neutral range. |
| MA20 | Whether the current price is Above or Below the 20-day simple moving average. "Above" = short-term bullish. "Below" = short-term bearish. |
| MA20 Cross | Whether a crossover happened recently — i.e. price just crossed the 20-day moving average within the last 3 trading days. A recent cross is a more significant signal than a sustained above/below condition. |
| P/E | Price-to-Earnings ratio (stock price ÷ earnings per share). Measures how expensive the stock is relative to its earnings. "N/A" means the company has no positive earnings (it is loss-making). |
| EPS | Earnings Per Share in dollars — the company's profit divided by the number of shares outstanding. Negative EPS = the company is losing money. |
| Mkt Cap | Total market capitalisation = share price × total shares outstanding. Large cap (>$10B), Mid cap ($2B–$10B), Small cap (<$2B). |
| Momentum 20D | Price return over the last 20 trading days (approximately one calendar month), expressed as a percentage. Strong positive momentum = stock has been trending up. Negative = trending down. |
| Volume | Number of shares traded today. When shown as a ratio (e.g. 1.8×), it means today's volume is 1.8 times the 20-day average volume. High volume confirms price moves. |
| Score | EpochOMS composite score from 0 to 100, combining RSI, MA position, momentum, volume, and P/E signals with the active strategy's weightings. Above 70 = BUY, 40–70 = HOLD, below 40 = SELL. |
| Signal | The actionable recommendation generated from the Score: BUY (score >70), HOLD (40–70), or SELL (<40). The agent only places orders on tickers with BUY or ADD MORE signals. |
After applying filters, click Save Screen (top-right of the screener panel) to name and save your filter configuration. Saved screens appear in the Screener sidebar for one-click access. Your saved screens are private to your user account.
EpochOMS includes a full options trading module. Access it from Analytics & Tools → Options Trading in the hamburger menu. Options are derivatives — contracts that give you the right (but not the obligation) to buy or sell a stock at a fixed price before a specified date.
Maximum loss on a long option is always limited to the premium paid. You cannot lose more than what you paid for the contract.
The options chain lists all available contracts for a given stock and expiry date. Calls are on the left, puts are on the right, and strike prices run down the middle. The row highlighted in amber is the at-the-money (ATM) strike — closest to the current stock price.
| Last | Bid | Ask | Vol | OI | IV% | Delta | Strike | Delta | IV% | OI | Vol | Ask | Bid | Last |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 14.80 | 14.70 | 14.90 | 2,841 | 18,402 | 28.4% | 0.72 | 180 | -0.28 | 27.1% | 12,100 | 980 | 5.50 | 5.40 | 5.45 |
| 10.20 | 10.10 | 10.30 | 4,120 | 24,800 | 27.8% | 0.61 | 185 | -0.39 | 27.2% | 19,500 | 2,100 | 6.40 | 6.30 | 6.35 |
| 6.40 | 6.30 | 6.50 | 8,900 | 42,100 | 26.9% | 0.50 | 190 ◀ ATM | -0.50 | 27.0% | 38,200 | 7,400 | 7.20 | 7.10 | 7.15 |
| 3.60 | 3.50 | 3.70 | 5,200 | 31,000 | 27.3% | 0.38 | 195 | -0.62 | 28.1% | 22,400 | 3,800 | 9.90 | 9.80 | 9.85 |
| 1.80 | 1.75 | 1.85 | 3,100 | 19,800 | 28.0% | 0.25 | 200 | -0.75 | 29.2% | 14,600 | 1,900 | 13.40 | 13.30 | 13.35 |
| Column | What it means |
|---|---|
| Strike | The fixed price at which you can buy (call) or sell (put) the underlying stock when exercising the option. |
| Last | The most recent transaction price for this option contract. |
| Bid / Ask | The current best buy (bid) and sell (ask) prices. The spread between bid and ask is your immediate cost of entry. Wide spreads = illiquid contract, avoid. |
| Volume | Number of contracts traded today. Higher volume = more liquid, tighter fills. |
| Open Interest (OI) | Total number of outstanding contracts that have not been settled. High OI = active market with many participants. |
| IV% | Implied Volatility — the market's expectation of future price movement, expressed as an annualised percentage. Higher IV = more expensive options (higher premiums). IV often spikes before earnings. |
| Delta | How much the option price changes per $1 move in the stock. Call delta ranges 0 to 1.0; put delta ranges -1.0 to 0. ATM options have ~0.50 delta. Delta also approximates the probability the option will expire in the money. |
| Greek | Symbol | What it means in practice |
|---|---|---|
| Delta | Δ | How much your option position makes or loses per $1 move in the stock. A delta of 0.60 means for every $1 the stock rises, the call option gains $0.60 (or $60 per contract of 100 shares). |
| Gamma | Γ | The rate of change of delta. High gamma means delta changes rapidly — your position becomes more sensitive as the stock moves toward your strike. ATM options have the highest gamma. |
| Theta | Θ | Time decay — how much the option loses in value per day just from the passage of time, all else equal. If theta is -0.05, the option loses $5 per day per contract. Theta accelerates as expiry approaches (the last 30 days are the steepest decay). |
| Vega | V | Sensitivity to implied volatility. If vega is 0.15, a 1% rise in IV increases the option's value by $0.15 ($15 per contract). Long options benefit from rising IV; short options benefit from falling IV. |
| Rho | ρ | Sensitivity to interest rates. Generally the least impactful greek for short-dated options. Matters more for long-dated LEAPS (options expiring 1–2 years out). |
The IV Surface (or volatility surface) is a 3D heatmap showing implied volatility across all strikes (x-axis) and expiry dates (y-axis). Access it via the "IV Surface" button in the options module.
The P&L Scenario chart (sometimes called a payoff diagram) shows the profit or loss of your option position at expiry for a range of stock prices. It is essential before entering any options trade.
EpochOMS has 7 built-in trading strategies. The AI agent runs them automatically on the configured schedule — weekdays at 14:00, 17:00, and 19:00 UTC. Each run fetches live prices, applies the active strategy, generates signals, and places qualifying orders on your paper / simulation account. On a live account the agent does not trade — live trading is self-directed (you place your own orders).
Only one strategy is active at a time. The active strategy is shown in the Strategy Profile card on the dashboard. You can change the active strategy via Admin → Agent Config. The signal score threshold (default: 70) determines which signals become actual orders.
The currently active strategy is displayed in the Strategy Profile card on the main dashboard (in the AI & Auto section). To change it:
The Signals table is on the main dashboard, below the KPI cards and equity chart. It updates after each agent run and shows the active strategy's assessment of every watchlist ticker.
| Ticker | Signal | Score | 20D Mom | RSI | MA Signal | ESG | Sentiment |
|---|---|---|---|---|---|---|---|
| NVDA | ADD MORE | 94 | +18.4% | 72.1 | ↑ Above | AA | BULLISH |
| AAPL | BUY | 78 | +7.2% | 58.1 | ↑ Above | AAA | NEUTRAL |
| MSFT | HOLD | 61 | +4.1% | 55.0 | ↑ Above | AA | NEUTRAL |
| TSLA | SELL | 28 | -8.6% | 61.2 | ↓ Below | B | BEARISH |
| Column | What it means |
|---|---|
| Signal | ADD MORE (strong buy, score >90), BUY (score 70–90), HOLD (score 40–70), SELL (score <40). Only ADD MORE and BUY signals trigger automated orders. |
| Score | 0–100 composite score from the active strategy. Higher = stronger positive signal. The score threshold in Agent Config determines the minimum to trigger an order. |
| 20D Momentum | Price change over the last 20 trading days as a percentage. This is the raw momentum input to the Momentum and Trend Following strategies. |
| RSI | Current RSI value. Below 30 = oversold (green). Above 70 = overbought (shown in red as a caution, though high RSI can also mean strong momentum). |
| MA Signal | Whether the stock price is currently above or below its 20-day moving average. ↑ Above = short-term bullish. ↓ Below = short-term bearish. |
| ESG | Environmental, Social & Governance rating from the data provider. AAA = best-in-class. CCC = lowest rated. Used as a filter in compliance screens. |
| Sentiment | AI-powered news sentiment analysis (powered by Claude Haiku) reading the last 48 hours of news headlines for the ticker. BULLISH / BEARISH / NEUTRAL. |
The trading agent runs automatically on weekdays (Monday–Friday) at three fixed times:
| UTC Time | US Eastern | Purpose |
|---|---|---|
| 14:00 UTC | 10:00 AM ET | Opening analysis run — market has been open ~30 minutes, initial price discovery is complete. Agent generates the day's primary signals. |
| 17:00 UTC | 1:00 PM ET | Mid-day run — reassesses signals after the morning session. Captures any significant price moves or news that emerged after open. |
| 19:00 UTC | 3:00 PM ET | Pre-close run — final signal check before the 4:00 PM ET close. Agent may place closing trades for day-trading strategies. |
Each run: fetches live prices → applies active strategy → generates signals → places orders exceeding the score threshold → sends Telegram notification with trade reasoning.
To trigger a manual run at any time: hamburger menu → Admin → Run Now. The run log is visible in AI & Auto section of the dashboard.
Every BUY, SELL, and HOLD signal generated by the trading agent is scored by a machine learning model (scikit-learn RandomForest trained on all historical signal logs). The score is called ml_confidence — it runs from 0.0 to 1.0 and measures how strongly the model agrees with the rule-based signal given the current indicator values.
| Confidence | What it means | Visual indicator |
|---|---|---|
| ≥ 75% | ML model strongly agrees with the rule-based signal direction. The indicator pattern (RSI, momentum, volume ratio, MA ratios) is clearly aligned with historical patterns for that signal type. | Blue ML XX% badge displayed next to the BUY/SELL/HOLD badge in the main signals table. |
| 40%–74% | Moderate model confidence — signal conditions were met but the pattern is not exceptional. | No badge. Signal is processed normally. |
| < 40% | Model uncertainty is high — indicator values are unusual or contradictory even though the rule triggered. | No badge. Apply additional judgement before acting on the signal. |
Note: ML confidence is informational only — it does not block or modify trades. The best trading opportunities are those where a HIGH conviction rule-based signal is accompanied by a strong ML badge (≥75%). The model retrains automatically every 30 days as new signal history accumulates.
Aggregates multiple portfolios (accounts) into a GIPS-style composite and presents the standard institutional performance table. Open from the menu → GIPS Composite, pick a composite, and the annual presentation renders. Compliance users create composites by grouping accounts.
Compares your trade blotter (all historical trade CSV records) against the live portfolio state to detect data integrity issues before they silently corrupt P&L. Found in Performance Analytics → Internal Reconciliation.
Reconciles your OMS holdings against a position file from your custodian (BNY Mellon, State Street, etc.). Open from the menu → Custodian Reconciliation, upload the custodian's CSV, and EpochOMS matches it line-by-line against your current positions.
EpochOMS includes three professional-grade analytical tools accessed from hamburger menu → Analytics & Tools. These tools help you size positions correctly, validate strategies on historical data, and monitor the FIX connectivity layer.
Access from Analytics & Tools → Position Sizer. Calculates the optimal number of shares to buy based on your risk tolerance, portfolio size, entry price, and stop loss level. Takes the guesswork out of position sizing.
Professional money managers typically risk 0.5–2% of total capital per trade. At 1% risk, even 10 consecutive losing trades only draw down your portfolio by approximately 10%, preserving enough capital to continue trading. At 5% risk per trade, a 10-loss streak wipes out 40% of the portfolio — a psychological and financial position that is very hard to recover from. The Position Sizer defaults to 1% but allows you to adjust between 0.25% and 5%.
Access from Analytics & Tools → Back Test Engine. Tests any of the 7 built-in trading strategies against historical price data before committing real capital. Choose the strategy, the time period (up to 5 years of data), and the universe (watchlist or S&P 500).
| Metric | What it means and what to look for |
|---|---|
| Equity Curve | A line chart of simulated portfolio value over the test period. Should be generally upward-sloping. Large drawdowns (sharp drops) indicate periods where the strategy fails. |
| Sharpe Ratio | Risk-adjusted return: (annualised return − risk-free rate) ÷ annualised volatility. Above 1.0 = acceptable. Above 2.0 = excellent. Below 0 = strategy destroys value on a risk-adjusted basis. |
| Max Drawdown | Worst peak-to-trough portfolio decline during the test period. Below 15% is generally considered acceptable for a diversified strategy. Above 30% suggests the strategy is too risky for most investors. |
| Win Rate | Percentage of individual trades that were profitable. Note: a strategy can have a win rate below 50% and still be profitable if winners are much larger than losers (high reward-to-risk ratio). |
| CAGR | Compound Annual Growth Rate — the smoothed annualised return over the entire test period. This is the most comparable figure across different test lengths. |
| Monte Carlo | 500 simulated equity paths generated by randomly shuffling the order of historical trade returns. Shows the range of possible outcomes. The shaded band covers the 10th to 90th percentile of simulated paths. |
| Walk-Forward IS/OOS | Splits historical data into In-Sample (the period used to select/fit parameters) and Out-of-Sample (a later period the strategy has never seen). Good strategies maintain strong performance in OOS. If OOS performance collapses, the strategy was over-fitted to the training period. |
Back-testing caveat: All back-tests assume perfect fills at historical closing prices and do not account for market impact, slippage, or bid-ask spreads. Real-world performance will differ, especially for larger position sizes.
Access from Analytics & Tools → FIX Monitor. Displays the live FIX 4.2 protocol message log between EpochOMS and the broker simulator. FIX (Financial Information eXchange) is the industry-standard messaging protocol for order routing between trading systems and brokers.
EpochOMS operates in one of three FIX modes shown in the Mode KPI card: IBKR (live FIX 4.2 TCP bridge to IB Gateway on port 4002 — real paper fills), SIMULATED (internal broker simulator), or UNAVAILABLE (IB Gateway offline). The IBKR BRIDGE badge in the header lights green when the live bridge is active. The FIX Monitor shows the same message types in all modes.
| Time | Dir | Type | ClOrdID | Symbol | Detail |
|---|---|---|---|---|---|
| 14:02:31 | → | NewOrderSingle=D | ORD-20240517-001 | AAPL | New |
| 14:02:31 | ← | ExecReport=8 | ORD-20240517-001 | AAPL | Fill @ $189.20 |
| 14:02:29 | → | NewOrderSingle=D | ORD-20240517-002 | MSFT | New |
| 14:00:00 | SYS | Heartbeat | — | — | SeqNum 482 |
| 09:30:01 | → | Logon | — | — | Session established |
| Column | What it means |
|---|---|
| Time | Message timestamp in HH:MM:SS (server time, UTC). |
| Dir | → = outbound message sent to the broker. ← = inbound message received from the broker. SYS = internal system message (heartbeat, logon/logoff). |
| Type | FIX message type. Logon = session start. Heartbeat = keep-alive (sent every 30s). NewOrderSingle=D = a new order sent to broker. ExecReport=8 = broker's execution confirmation. CancelReq=F = order cancellation request. |
| ClOrdID | Client Order ID — your unique identifier for the order, generated by EpochOMS. Allows you to match outbound orders with inbound execution reports. |
| Symbol | The stock ticker for this FIX message. |
| Detail | Execution status detail: New (order acknowledged), PartFill (partially filled), Fill (fully filled), Canceled, Rejected. |
Access from Markets → Futures. Displays live quotes for 19 futures contracts (ES, NQ, YM, RTY, CL, NG, GC, SI, HG, ZB, ZN, ZC, ZS, 6E, 6B, BTC, MES, MNQ, VX) and allows order placement via the IBKR paper account.
| Exchange | Contracts |
|---|---|
| CME | ES, NQ, RTY, 6E, 6B, BTC, MES, MNQ |
| CBOT | YM, ZB, ZN, ZC, ZS |
| NYMEX | CL, NG |
| COMEX | GC, SI, HG |
| CFE | VX |
Track illiquid alternatives — private equity, venture capital, real estate, infrastructure, hedge funds, private credit. Found in the Private Assets & Alternatives accordion group, hidden by default. Open it when you have real LP positions. All data is entered manually from GP quarterly statements; there is no public API for PE/VC NAVs.
| Metric | Formula | What it means |
|---|---|---|
| MOIC | NAV / Cost | Unrealised multiple. 1.5x = 50% paper gain. |
| TVPI | (NAV + Distributions) / Cost | Total return including cash already returned to you. |
| DPI | Distributions / Cost | Cash returned vs cash invested. DPI > 1x = in profit on a cash basis. |
| Net IRR | From GP statement | Internal rate of return net of fees. The standard PE benchmark metric. |
Estimated annual dividend income from your current portfolio holdings. Found in News & Signals. Data pulled automatically from yfinance (trailing 12-month dividend rate), cached 4 hours. Non-paying positions are excluded.
| Column | What it shows |
|---|---|
| DIV/SHR | Trailing annual dividend per share from yfinance trailingAnnualDividendRate. |
| YIELD | Annual yield as % of current price. Green ≥ 5%, amber ≥ 2%. |
| ANN. INCOME | DIV/SHR x Shares held. Your estimated annual income from this position. |
| QTR EST | Annual Income / 4. Approximate quarterly cash, assuming quarterly pay schedule. |
EpochOMS classifies the market into one of four regimes using SPY price, the 50-day moving average, 5-day momentum, and VIX. The regime gates the autonomous cron-agent execution loop.
| Regime | Conditions | Auto-Execute? | Position Sizing |
|---|---|---|---|
| BULL | VIX < 20, SPY above 50d MA, momentum > −1% | Yes | 100% |
| NEUTRAL | Mixed signals | Yes | 80% |
| BEAR | VIX > 25, below MA, momentum < −2% | Suspended | 50% |
| HIGH VOL | VIX > 30 | Suspended | 0% |
Cached 5 minutes. Force refresh: GET /api/regime?refresh=1. The regime gate only affects the automated cron loop — manual orders use the normal 7-gate risk check.
Compares your portfolio's cumulative return against any user-selected market benchmark over rolling periods. Quantifies alpha, tracking error, and information ratio so you can objectively measure whether active management is adding value.
| Metric | Definition | What it tells you |
|---|---|---|
| Active Return (α) | Portfolio return − benchmark return | Raw outperformance or underperformance vs the market |
| Tracking Error (TE) | Annualised std dev of daily active returns | How consistently you deviate from the benchmark — lower TE = closer tracking |
| Information Ratio (IR) | Active Return ÷ Tracking Error | Reward per unit of active risk — IR > 0.5 is considered good; > 1.0 is exceptional |
| Beta | Cov(portfolio, benchmark) ÷ Var(benchmark) | Sensitivity to benchmark moves — β < 1 = less volatile than market |
| Correlation | Pearson correlation of daily returns | How closely returns move together — high correlation with positive alpha is ideal |
^GSPC, DIA, BTC-USD)daily_values in the portfolio state — the platform logs a snapshot each daydata/benchmark.json; API: GET /api/benchmark?period=1Y, POST /api/benchmark {ticker}Access from Performance Analytics → Benchmark Management.
Constructs the Markowitz efficient frontier from your current holdings using historical returns. Identifies the optimal portfolio weights that either minimise volatility or maximise risk-adjusted return, so you can rebalance toward a theoretically superior allocation.
| Portfolio | Objective | When to use |
|---|---|---|
| Min Variance | Lowest volatility on the efficient frontier | Capital preservation, choppy markets |
| Max Sharpe | Highest risk-adjusted return (risk-free rate 4.5%) | General use — best return per unit of risk taken |
| Equal Weight | 1/N baseline — equal allocation to every holding | Sanity-check benchmark against optimised weights |
Free tier: 3 optimiser runs per day. Pro: unlimited runs.
Access from Portfolio → Portfolio Optimiser. API: POST /api/portfolio/optimise (force-refresh) or GET /api/portfolio/optimise (cached 1 hour).
Calculates portfolio performance using the CFA Institute Global Investment Performance Standards (GIPS) 2020 methodology. Provides time-weighted and money-weighted returns that are directly comparable across managers and time periods.
| Metric | What it measures | When to use |
|---|---|---|
| TWR (Time-Weighted) | Eliminates timing bias from external cash flows. Chains sub-period returns between each deposit/withdrawal. | Manager performance comparison. GIPS standard metric. |
| MWR (Money-Weighted) | IRR (internal rate of return) — weights returns by capital size and timing. Reflects actual dollar performance. | Investor experience. Heavily influenced by when capital was added. |
| Active Return | TWR minus SPY benchmark return. Positive = outperformed the market. | Evaluating alpha generation versus passive index. |
Access from Performance Analytics → GIPS Performance (TWR & MWR). API: GET /api/performance/gips — requires analyst role or above.
Decomposes portfolio active returns into three independent effects using the Brinson-Hood-Beebower (BHB) model — the industry standard for institutional performance attribution. Explains why your portfolio outperformed or underperformed the S&P 500.
| Effect | Formula | What it measures |
|---|---|---|
| Allocation | (wp−wb)×(Rb−R) | Did you over/underweight the right sectors? Positive when you overweighted sectors that beat the benchmark. |
| Selection | wb×(Rp−Rb) | Did you pick better stocks than the sector ETF within each sector? Pure stock-picking skill. |
| Interaction | (wp−wb)×(Rp−Rb) | Combined effect of concentrating in sectors where you also picked better stocks. |
| Total Active Return | Sum of all three | Portfolio return minus S&P 500 return, decomposed by source. |
Access from Performance Analytics → Brinson Attribution (BHB). API: GET /api/performance/brinson — requires analyst role or above. Results cached 4 hours.
Computes the Net Asset Value (NAV) per unit of your portfolio using the standard fund industry formula: NAV = (Total Assets − Liabilities) ÷ Outstanding Units. Provides the daily NAV history chart and a full assets breakdown.
| Component | Definition | Source |
|---|---|---|
| Total Assets | Cash balance + market value of all holdings (all converted to USD) | Portfolio state + live prices via get_price_usd() |
| Liabilities | $0.00 — no margin debt or fee accruals in paper trading | N/A |
| Outstanding Units | Derived from initial capital at $100/unit (e.g. $10,000 capital = 100 units, inception NAV = $100.00) | accounts.json → initial_cash / 100 |
| NAV per Unit | Current total NAV divided by outstanding units | Computed real-time |
| Daily History | NAV per unit for each recorded day — shows fund value growth over time | portfolio_state daily_values |
Access from Performance Analytics → NAV Calculation. API: GET /api/performance/nav — requires analyst role or above. Cached 1 hour. Non-US holdings use USD-normalised prices to avoid local-currency inflation.
30-business-day projected cash flow view: expected inflows from dividend receipts and sell settlements, plus outflows from buy settlements (T+2). Keeps you aware of upcoming liquidity events.
A middle-office pricing-integrity control. Every holding is independently re-priced from a separate market source and compared against the price you paid (the broker fill), so stale feeds, bad ticks, or data errors are caught before they distort your valuations. This is a control report, not a profit-and-loss statement.
Access from Performance Analytics → Independent Valuation. API: GET /api/performance/valuation — analyst role or above. Cached 10 minutes.
Shows what your book would require under standardised non-cleared margin rules. Initial Margin is computed from the BCBS/IOSCO schedule (a prescribed percentage of notional by asset class — no proprietary model or licence required); Variation Margin is the mark-to-market move on each position.
Access from Performance Analytics → Collateral & Margin. API: GET /api/performance/margin — analyst role or above. Cached 10 minutes.
Risk-Weighted Assets under the Basel III standardised approach, and the regulatory capital they imply. Each exposure is multiplied by a prescribed risk weight; the total feeds the minimum capital calculation. Useful context for FCA authorisation and capital-adequacy discussions.
Access from Performance Analytics → Standardised RWA. API: GET /api/performance/rwa — analyst role or above. Cached 10 minutes.
Decomposes index ETFs you hold (SPY, QQQ, DIA …) into their underlying single-name constituents so your true stock-level concentration is visible — e.g. the AAPL you own directly plus the AAPL inside every ETF. Uses a static constituent map with an override file; there is no live holdings feed.
Access from Analytics → ETF Look-Through. API: GET /api/lookthrough.
Tracks Commission-Sharing-Agreement (CSA/CCA) accruals: a configurable research portion of commission notional accrues into a research-payment pool, against which you log research payments and a budget. Gives an auditable soft-commission ledger.
API: GET /api/csa, /api/csa/config, /api/csa/payment.
A register of securities on loan and short-sale locates/borrows, with fee and borrow-cost accrual. Supports the locate requirement before short selling and records the running cost of each borrow.
API: GET/POST /api/seclending/*.
Generates a PRIIPs Key Information Document: the Summary Risk Indicator (SRI 1–7), performance scenarios, and the aggregated cost disclosure, as HTML and PDF — the retail-disclosure document required under the PRIIPs regime.
API: GET /api/report/priips_kid (HTML + PDF).
Monitors settlement fails and computes the CSDR cash-penalty accrual on failing trades, built on the existing STP MT54x / ISO 20022 and affirmation flow. Surfaces what would fail and the penalty it would attract under the CSDR Settlement Discipline Regime.
API: GET /api/settlement/fails.
The Compliance tab provides a real-time view of all regulatory and internal risk limit monitoring. It is the authoritative record for audit purposes and must be reviewed before end of day by the compliance officer role.
| Role | Orders | Approval | Compliance | Admin | Reports |
|---|---|---|---|---|---|
| Admin | Full | Full | Full | Full | Full |
| Trader | Place/Cancel | None | View | None | Own only |
| Risk Manager | View | Approve/Reject | Full | None | Full |
| Compliance | View | None | Full + Export | None | Full |
| Analyst | View | None | View | None | View |
| Guest | None | None | None | None | None |
EpochOMS enforces pre-trade risk limits at two levels. Understanding which applies to manual orders versus the automated agent avoids confusion when you receive compliance notifications.
| Limit | Config key | What it does |
|---|---|---|
| Per-order notional cap | MAX_SINGLE_ORDER_NOTIONAL | Maximum dollar value of a single BUY order (default $500). The agent clips its order size down to this cap before placing — it never charges at the limit and bounces. Manual orders above this cap are blocked with a compliance notification explaining why. |
| Position concentration | MAX_POSITION_PCT | No single ticker may exceed this % of total portfolio value. The agent skips signals for positions already at the limit. |
| Sector concentration | MAX_SECTOR_CONCENTRATION_PCT | No single GICS sector may exceed this % of portfolio. Agent skips signals in a sector already at its cap. |
| Daily loss limit | MAX_DAILY_LOSS_PCT | If the portfolio is down more than this % on the day, all agent BUY orders halt for the remainder of the session. |
| Cash reserve | MIN_CASH_RESERVE_PCT | The agent will never place a buy that would reduce available cash below this floor. |
MAX_SINGLE_ORDER_NOTIONAL, the agent clips the order to the cap and places it at the capped size. It does not skip the trade, and it will never generate a 🚫 Compliance Block: MAX_NOTIONAL notification — that notification means a manual order was submitted above the cap.Risk parameters are configured in Preferences → Risk Settings (admin only). Changes take effect on the next agent run without a restart.
Every action in EpochOMS is recorded in the immutable audit log: order placements, approvals, rejections, logins, settings changes, and agent runs. The log is accessible from Compliance → Audit Log and can be exported as a signed PDF or CSV.
SYSTEM_AGENT user ID with the run timestamp.GET /api/audit/verify. The public key is at GET /api/audit/public-key.audit_trail.jsonl is protected by a Linux append-only inode flag (chattr +a). Even root cannot truncate or overwrite it. This meets MiFID II RTS 24 Article 72 immutability requirements.EpochOMS generates MiFID II Article 26 transaction reports in the official ISO 20022 auth.016.001.02 XML schema — the format an Approved Reporting Mechanism (ARM) accepts for submission to the FCA. Download from Compliance → Regulatory Reports.
| Report | Scope | Format |
|---|---|---|
| RTS 22 Transaction Report | Every execution in the period — one <Tx><New> block per trade | XML (auth.016.001.02) |
| RTS 27 Execution Quality | Best-execution venue metrics | CSV |
| RTS 28 Top-5 Venues | Order routing by venue | CSV |
Each RTS 22 transaction carries the executing and submitting entity LEIs, buyer and seller identification, instrument ISIN (with a fallback identifier where an ISIN is not yet mapped), microsecond execution timestamp, trading capacity, price and currency, the execution venue MIC code, and the short-selling indicator.
EpochOMS is built so that your data stays yours. The platform's isolation and encryption are verified by automated tests on every release.
Beyond the checks that run when you place an order, EpochOMS continuously sweeps your whole book for issues that build up over time — a position growing too large as its price rises, drift away from a mandate’s target weight, holding a name that has since been restricted, low cash, or potential wash sales. Findings are graded by severity and you are alerted to new high-severity breaches automatically.
One place to generate every regulatory report — MiFIR (RTS 22/27/28), EMIR, SFTR, AIFMD Annex IV, SEC Form 13F, and short-position / ownership disclosure — as CSV, XML, or polished PDF. A calendar shows upcoming filing deadlines (for example, Form 13F is due 45 days after quarter-end) and every generation is recorded to an audited register.
EpochOMS delivers real-time alerts through three channels: the in-app notification bell (🔔), email, and Telegram. Configure your preferences in Preferences → Alert Config.
| Channel | Setup | Best for |
|---|---|---|
| In-App Bell | Always active — no setup needed. Bell icon turns amber when unread alerts exist. Click to open the drawer. | Non-urgent notifications you check periodically throughout the day. |
| Your registered email (set on account creation). Configure which alert types trigger email in Preferences → Alert Config. | End-of-day summaries, compliance reports, approval notifications when you are away from the platform. | |
| Telegram | Link your Telegram account by entering your Chat ID in Preferences → Alert Config. The EpochOMS bot must be added to your Telegram. | Real-time trade notifications and agent run summaries — Telegram delivers within seconds. Ideal for monitoring the agent while away from your desk. |
| Push Notifications | Enable via Preferences → Push Notifications. Works in any browser that supports PWA web push. No app install needed — alerts appear as native OS notifications even when the browser tab is not open. | Screener crossings and trade fills when you are away from the dashboard. Combined with Telegram, gives full dual-channel real-time coverage. |
Every Telegram alert that references a specific stock uses a consistent three-part header: TICKER · Company Name · Sector followed by the core detail. This applies across all channels (Trading, Alerts, Daily).
| Alert type | Channel | Format |
|---|---|---|
| Trade executed (BUY / SELL) | Trading | Ticker · Company · Sector, then shares / price / value / signal reasoning / selection context |
| Screener signal (RSI / MA) | Alerts | Ticker · Company · Sector, then signal label and crossing description |
| Price alert triggered | Alerts | Ticker · Company · Sector, then direction arrow and triggered vs target price |
| Volume spike | Alerts | Ticker · Company · Sector, then volume ratio vs ADV |
| Earnings proximity | Alerts | Ticker · Company · Sector, then days until earnings date |
| Compliance block | Alerts | Ticker · Company · Sector, then rule name and detail |
| Daily summary & morning brief | Daily / Trading | Each holding and trade line shows Ticker · Company · Sector inline |
Company names and sectors are resolved from the full S&P 500 enrichment layer — all 479 screener instruments are covered, not just the core watchlist.
The live screener scans 547 instruments every 60 seconds. To prevent notification floods, the system applies a two-tier throttle:
| Ticker type | Cooldown | Per-cycle cap |
|---|---|---|
| Regular tickers | 4 hours — same ticker+signal cannot re-fire within 4 hours | 10 alerts per 60s scan cycle (RSI signals prioritised over MA crossovers) |
| Favourited tickers with alerts on (🔔) | 30 minutes — fires more frequently for tickers you care about | Separate 20-alert cap, independent of the regular cap |
Click the ★ star icon in the top header to open your Favourites panel. Each starred stock has a bell icon (🔔/🔕) to the left of the star:
EpochOMS generates several standard financial reports. Access them from hamburger menu → Reports. All reports can be exported as PDF or CSV.
The Performance Report includes a calendar heatmap showing monthly portfolio returns. Green cells = positive months. Red cells = negative months. The intensity of colour scales with the magnitude of the return. This makes it easy to spot seasonal patterns or strategy weaknesses in specific market conditions.
Access Settings from hamburger menu → Preferences → Settings. This is where you configure the platform to match your workflow, trading style, and risk tolerance.
EpochOMS is broker-agnostic — it works with any supported broker using your own API credentials. The broker holds your capital; EpochOMS provides all the analytics and execution intelligence on top.
| Broker | Account type | Monthly cost | Best for |
|---|---|---|---|
| Alpaca | Paper + Live (US stocks & ETFs) | Free (paper & live) | Most EpochOMS users — zero cost, instant setup |
| Interactive Brokers (IBKR) | Paper + Live (multi-asset, global) | Commission per trade only | Institutional tier, multi-asset, FIX 4.2 bridge |
IBKR session keepalive: The Client Portal Gateway session expires if unused. EpochOMS sends a keepalive ping automatically when you are active. If you leave for several hours and return to a disconnected session, open the Broker Connectivity panel and click Refresh — if it shows disconnected, log back into IBKR Desktop to restore the session.
Paper vs Live: Start on Paper. Paper mode uses Alpaca's simulated order book — fills are realistic but no real money moves. Switch to Live only after you have validated your strategy in backtesting and paper trading. The account chip in the header turns amber on Live as a permanent reminder.
Your broker holds your cash. To add funds: deposit directly through Alpaca or IBKR using their normal bank transfer process. EpochOMS will automatically sync your cash balance on the next portfolio refresh. If a recent deposit hasn't appeared yet, use Settings → Account → Sync Balance to force an immediate reconciliation.
Alpaca provides separate API keys for paper and live accounts — they are not the same key. Make sure you paste the correct key for the mode you intend to use. Using your live API key in paper mode or vice versa will cause authentication failures.
EpochOMS uses a dark terminal aesthetic by default. There is no light mode — the dark theme is optimised for extended screen time during market hours and reduces eye strain on multiple monitor setups. Font size can be adjusted in Settings → Display (Small / Medium / Large).
| Setting | Description |
|---|---|
| Default Account | Sets which account (Paper or Live) loads by default when you open the platform. Recommended: Paper Account for most users unless you are actively managing a live book. |
| Starting Capital | The notional starting balance for paper trading. Changing this resets the paper portfolio P&L calculation baseline but does not affect position holdings. |
| Timezone Display | All internal timestamps are stored in UTC. This setting controls how they are displayed in the UI. Default: UTC. Change to your local timezone for more intuitive time display. |
| Session Timeout | Automatically logs you out after the specified period of inactivity. Default: 60 minutes. Compliance-required minimum: 30 minutes for accounts with Trader or higher role. |
The AI & Auto section controls the behaviour of the automated trading agent and the AI chat assistant. The automated agent and auto-approve operate on paper / simulation accounts only and cannot be enabled on a live account — live trading is always self-directed (you place every order yourself).
| Setting | Description |
|---|---|
| Agent Enabled | Master on/off toggle for the automated trading agent. When disabled, the agent still runs its analysis on schedule but does not place any orders — it only updates the Signals table. |
| Auto-Approve Orders | By default, orders over $10,000 go to the manual approval queue. Enabling auto-approve bypasses this check. The autonomous agent runs on paper / simulation accounts only and cannot be enabled on a live account, so auto-approve applies to simulated trading only. |
| Score Threshold | The minimum composite score (0–100) required for the agent to place an order. Default: 70. Lower threshold = more trades, higher activity. Higher threshold = fewer, higher-conviction trades only. Adjust based on your back-test results for the active strategy. |
| Max Orders Per Run | Caps the number of orders the agent can place in a single scheduled run. Default: 5. Prevents the agent from deploying large amounts of capital in one shot if a sudden opportunity creates many buy signals. |
| Max Position Size | The maximum dollar value the agent can allocate to any single position. Works in conjunction with the Position Sizer formula. Default: $25,000. |
The agent log is accessible from the AI & Auto section of the main dashboard (scroll down past the chat panel to find the Agent Log table). It shows every decision the agent made during its run.
| Timestamp | Action | Ticker | Score | Qty | Reason |
|---|---|---|---|---|---|
| 14:02:31 | BUY | AAPL | 78 | 50 | Score above threshold (78>70). RSI 58, above MA20, momentum +7.2%. |
| 14:02:29 | SKIP | MSFT | 61 | — | Score below threshold (61<70). HOLD signal — no action. |
| 14:02:28 | SKIP | TSLA | 28 | — | SELL signal. No existing position to reduce. Skipped. |
| 14:02:27 | BUY | NVDA | 94 | 12 | ADD MORE signal. Score 94. Capped at 12 shares to stay under 20% concentration. |
| Action | Meaning |
|---|---|
| BUY | Agent placed a buy order for this ticker. Order appears in the Orders tab. |
| SELL | Agent placed a sell/reduce order for an existing position. |
| HOLD | Score in the HOLD range (40–70). Agent assessed but took no action — existing position retained as-is. |
| SKIP | Agent had a signal but chose not to act. Common reasons: score below threshold, no existing position for a sell signal, concentration cap would be exceeded, max orders per run already reached. |
The automated runs are scheduled on the server cron. They happen at 14:00, 17:00, 19:00 UTC on weekdays.
| UTC | US Eastern | UK (BST/GMT) | Session context |
|---|---|---|---|
| 14:00 | 10:00 AM ET | 15:00 BST / 14:00 GMT | Opening run — ~30 mins after NYSE open. Initial price discovery complete. |
| 17:00 | 1:00 PM ET | 18:00 BST / 17:00 GMT | Mid-session run — reassesses after morning moves and lunchtime news flow. |
| 19:00 | 3:00 PM ET | 20:00 BST / 19:00 GMT | Pre-close run — final pass before NYSE close (16:00 ET). May trigger closing trades. |
Weekend & Holiday behaviour: The agent does not run on weekends or US federal holidays. On days when the market closes early (e.g. day before Thanksgiving), the 19:00 UTC run may find no market open — the agent detects this and skips order placement but still logs the analysis.
In Settings → Notifications, toggle each alert type on or off per channel (in-app, email, Telegram). For example, you may want order fill notifications on all three channels but only want the daily summary report on email.
Every user can protect their own account with an authenticator-app one-time code (TOTP), on top of their password. 2FA is enrolled per user — turning it on for your account does not affect anyone else.
If you manage outside investors, the Investor Portal gives each Limited Partner a secure, read-only login showing their own capital account plus an aggregated view of the fund. Administrators manage it from the menu → Investor (LP) Admin.
investor login confined to the portal.PAD mode is an optional compliance feature for users who need to follow Personal Account Dealing rules (common in regulated financial institutions). It is off by default — enable it only if your employer or regulator requires it.
| Feature | Behaviour when PAD mode is ON |
|---|---|
| 30-day holding period | The automated agent cannot generate a SELL signal for any position held fewer than 30 days since the last buy. Stop-loss and take-profit exits are exempt. |
| Pre-clearance required | Before placing a BUY order, the agent checks /compliance/preclear for an active clearance token. If no clearance exists, the order is blocked and logged to the compliance audit trail. |
| Compliance logging | Every blocked trade is written to the PAD compliance log, available in Menu → Compliance & Audit → PAD Pre-Clearance. |
Toggle PAD mode on or off from Menu → Compliance & Audit → PAD Pre-Clearance. The toggle is instant — no restart required.
Important: PAD mode affects the automated trading agent only. Manual orders placed via the New Order panel are not blocked by PAD rules — you remain responsible for your own compliance obligations when placing manual trades.
The onboarding tour walks you through every major feature of the dashboard when you first log in. It appears automatically after your first login and can be dismissed at any step by tapping Skip.
| Step | What it covers |
|---|---|
| 1 — Welcome | Overview and navigation tips. |
| 2 — Live Portfolio Metrics | The KPI row: Portfolio Value, Total P&L, Sharpe Ratio, VaR. |
| 3 — New Order | The + button: Market, Limit, Stop orders; 4-eyes approval for large trades. |
| 4 — Favourites & Alerts | Star watchlist and RSI/MA alert bell. |
| 5 — Max AI Assistant | Chat bubble for market analysis and support. |
| 6 — Menu | Hamburger menu: Screener, Reports, Compliance, Tools. |
| 7 — Settings | Gear icon: Strategy config, AI mode, scheduler, API monitor. |
| 8 — All set | Support contacts and sign-off. |
To restart the tour at any time: open ≡ Menu → Preferences → Restart Tour. You can also press Escape to dismiss the tour if the overlay ever gets stuck.
Tip: All header icon buttons have hover tooltips — hover over any icon (star, bell, chat bubble, menu, gear) to see its label without opening it.
EpochOMS uses Stripe for secure subscription management. You can subscribe, upgrade, and cancel entirely through self-serve — no sales call required.
| Plan | Monthly | Annual | Included |
|---|---|---|---|
| Free (Explorer) | £0 | £0 | Paper trading, full analytics, backtesting, 1 portfolio |
| Pro | £19/mo | £190/yr | All Free + priority data refresh, extended screener history, PDF reports |
| Trader | £49/mo | £490/yr | All Pro + live broker execution, real-time alerts, extended API access |
| Enterprise | £99/mo | £990/yr | All Trader + multi-user seats, compliance toolkit, priority support, white-label options |
Annual plans save 2 months — equivalent to paying for 10 months and getting 12.
/upgrade. The pricing page shows monthly and annual options — toggle between them at the top.| Question | Answer |
|---|---|
| When am I charged? | Immediately on subscribing, then on the same date each month (or year for annual plans). Stripe handles all renewals automatically. |
| How do I cancel? | Go to Menu → Account → Manage Subscription. Your access continues until the end of the current billing period. There is no cancellation fee. |
| Can I switch from monthly to annual? | Yes — upgrade at any time from the same Manage Subscription page. Stripe applies a prorated credit for unused days on your current monthly period. |
| What happens on downgrade? | Your tier is changed at the end of the current billing period. Until then, you retain full access to your current plan's features. |
| Is my card data stored on EpochOMS servers? | No. Payment data lives entirely with Stripe. EpochOMS stores only your Stripe customer ID and subscription status, not any card details. |
| Do you offer refunds? | Annual plans cancelled within 14 days of purchase receive a full refund. Monthly plans are non-refundable after the billing date. Contact support@epochoms.com for exceptional cases. |
Financial and platform terms used throughout EpochOMS, explained in plain English.