Cent vs standard account
NOVOSKY supports two account types via config.json → "account_type". The trading logic is identical — only how the balance is displayed and sized differs.
| Cent account | Standard account |
|---|
config.json setting | "account_type": "cent" | "account_type": "standard" |
| Example deposit | 500 USC ≈ $5 USD | $500 USD |
| Telegram P/L display | +55 USC ($0.55) | +$0.55 |
| Telegram balance | 681 USC ($6.81) | $681.00 |
| 2% risk per trade | 2% of 6.81=0.14 | 2% of 681=13.62 |
Recommended pipeline: start on a cent account to validate the full system end-to-end (signals, execution, Telegram alerts, risk sizing), then graduate to a standard account with identical config.
How it works internally
The API returns balance/equity in the account’s native currency. For cent accounts that is USC; for standard accounts that is USD.
The bot normalises balance to USD at the API boundary (_api_balance_to_usd()), so all risk sizing, P/L tracking, and growth calculations are always in USD. format_currency() then converts back to USC for display when account_type = "cent".
Deal profits from the API (/history/deals → profit) are always returned in USD regardless of account type — no conversion needed.
Switching account type
Only change one line in config.json. No retraining, no model changes, no other config changes needed.
"account_type": "cent" // VT Markets Cent — balance in USC
"account_type": "standard" // Standard account — balance in USD
Spread values per broker
Spread is passed to the backtester to correctly simulate execution costs. Using the wrong value inflates win rate by 5–8 percentage points.
| Broker | Account type | --spread value |
|---|
| VT Markets BTCUSD | Cent or Standard | 16.95 |
| IC Markets RAW | Standard | 3.0 |
Spread from /rates is returned in raw points. For BTCUSD, 1695 points = $16.95 round-turn. trading.py handles this conversion automatically — you don’t need to adjust it. The --spread flag for backtesting takes the dollar value.
Broker diagnostics
Before going live on a new broker, check lot limits, margin requirements, and spread:
python scripts/check_broker_limits.py
This prints:
- Minimum and maximum lot size
- Lot step
- Required margin at current price
- Current spread in points and dollars
- Swap rates (long and short)
- Stops level (minimum SL/TP distance)
Backtesting with broker-specific settings
# VT Markets Cent (default)
python backtest_config.py \
--balance 500 --no-swap --leverage 500 \
--spread 16.95 --oos-only --no-chart
# VT Markets Cent with lot cap
python backtest_config.py \
--balance 500 --no-swap --leverage 500 \
--spread 16.95 --oos-only --cent-account \
--max-lot 0.1 --no-chart
# IC Markets RAW
python backtest_config.py \
--balance 10000 --days 365 --swap-long 20 \
--leverage 200 --spread 3.0 --no-chart