Docs
Position Records
Review & Playbooks
Symbol Types
A type is a set of calculation rules
A symbol type tells LucrJournal how to interpret quantity, contract unit, and fees. It is not only a label for filtering.
Type matters because the same number means different things under different types. 2 can mean two units of a native asset, two contracts, or two lots. The plugin uses the type to calculate notional value and fees, then passes those results to the position’s risk and profit formulas.
This means numbers can still appear when the wrong type is selected, but they may not use the rules you expect.

Crypto Spot
Crypto Spot records quantity in native asset units. Its contract unit is fixed at 1 and cannot be edited.
This type matters because Amount and Entry Price determine notional value. Fee is then calculated as a percentage of notional value.
For example, in Native mode, 0.5 ETH at an entry price of 2,000 has a notional value of 1,000. With a 0.1% fee rate, the fee is 1.
It is related to the position’s Amount, Entry Price, Notional Value, and Fee. Code shapes are usually BTCUSDT or DOGE/USDT.
Crypto Perpetual
Crypto Perpetual is the type the plugin uses for crypto perpetual code shapes. Its contract unit is also fixed at 1.
This type matters because it classifies the code as a perpetual. Its current quantity, notional value, and fee formulas are the same as Crypto Spot: native asset quantity multiplied by entry price gives notional value, and the fee is a percentage of notional value.
For example, 0.02 BTC at an entry price of 60,000 has a notional value of 1,200. With a 0.05% fee rate, the fee is 0.6.
It is related to normalized codes ending in .P, the position’s Amount, and percentage fees. BTC/USDT:USDT, BTCUSDT_PERP, and BTCUSDT.NEXT are all normalized to BTCUSDT.P.
Future
Future records quantity as a number of contracts. A position uses Contract, which only accepts integers from 1 through 20. The contract unit comes from the plugin’s built-in table and cannot be overridden by the symbol file.
This type matters because notional value is calculated as “contracts × entry price × contract unit.” Fee is calculated per contract instead of as a percentage of notional value.
For example, the built-in contract unit for MES is 5. With 2 contracts and an entry price of 5,000, the notional value is 50,000. If the fee is 1.25 per contract, the total fee is 2.5.
It is related to the position’s Contract, the symbol’s built-in Contract Unit, and per-contract fees. Built-in codes such as ES, MES, and NQ are recognized directly as futures.
CFD
CFD records quantity in lots. A position uses Lots, with a range from 0.01 through 20. The contract unit comes from the built-in table, but you can change it on the symbol to an integer greater than 0.
This type matters because notional value is calculated as “lots × entry price × contract unit.” Fee is calculated per lot.
For example, the built-in contract unit for XAUUSD is 100. With 0.1 lots and an entry price of 2,300, the notional value is 23,000. If the fee is 3 per lot, the total fee is 0.3.
It is related to the position’s Lots, the symbol’s Contract Unit, and per-lot fees. XAUUSD, EURUSD, and several index codes have built-in contract units.
What happens when you select the wrong type?
| Selected type | How the plugin interprets quantity | How fees are calculated | Common result |
|---|---|---|---|
| Crypto Spot | Native asset quantity | Percentage of notional value | A futures or CFD multiplier is ignored. |
| Crypto Perpetual | Native asset quantity | Percentage of notional value | A missing type also silently uses these rules. |
| Future | 1–20 integer contracts | Per contract | Notional value may not be derived without a built-in contract unit. |
| CFD | 0.01–20 lots | Per lot | A wrong contract unit multiplies or divides notional value by the same factor. |
Notional value is also used to calculate net profit and risk. Selecting the wrong type does more than mislabel one field. It carries the error into the position result.
How automatic inference works
The plugin normalizes the code first, then checks these rules in order:
- Match a built-in code first.
ESis recognized asFuture.XAUUSD+is normalized toXAUUSDand recognized asCFD. - Infer recognizable perpetual code shapes as
Crypto Perpetualand normalize them to an ending of.P. - Infer other explicit trading pairs and compact codes made from known quote assets as
Crypto Spot. - Split any remaining six-letter uppercase code into its first and last three letters, then infer
Crypto Spot. - Leave the type empty when the code cannot be recognized as a pair. Position calculations then fall back to the
Crypto Perpetualmodel.
| Input | Saved name | Inferred type |
|---|---|---|
DOGE/USDT |
DOGEUSDT |
Crypto Spot |
BTCUSDT_PERP |
BTCUSDT.P |
Crypto Perpetual |
FOO/BAR |
FOO/BAR |
Crypto Spot |
ABCDEF |
ABCDEF |
Crypto Spot |
Relationship to other concepts
The symbol type belongs to one symbol record under one account. The same code in two accounts creates two symbols, so each can store its own type and fee rate. See Platforms, Accounts, Symbols, and Positions for the complete relationship.
Type determines a position’s quantity field and derived calculations, but it does not fill in every input. See Position Lifecycle for which fields matter during opening, closing, and review.