Building the Assets Stack: A Detailed Setup Guide
Last updated: July 1, 2026
The Building Blocks
The assets stack combines three kinds of data, plus a trade type that ties them together:
Component | What it holds | Where it lives |
Asset | The physical or logical position being modeled (a generation facility, a retail demand book, an imbalance position) | Assets tab |
Asset Entries (asset valuations) | Time-series volumes and valuations per asset + product + contract period + as-of date — your volumetric curve | Asset → Valuations tab |
Marks | Price curves per product (account-wide) or per asset + product (asset-specific) | Market Data tab |
As-Generated (As-Gen / PPA) trade | A trade whose quantity is a percentage of asset output rather than a fixed volume | Trades tab |
At valuation time, Molecule combines the volumes from asset entries with the prices from marks to produce a volume-weighted valuation for each asset-linked trade. Asset entries also appear directly in P&L alongside trade settlement entries, so traded and non-traded positions show in one unified view.
This asset-linked pattern is what powers dynamic volume trades and PPA structures in Molecule — the trade's volume follows the asset's data instead of being fixed at booking.
Step 1 — Create the Asset
In the left sidebar, click Assets , then New Asset .
Enter a Name and select an Asset Type (single-select). Types are created inline — type a new name and choose Create "[name]" .
Assign one or more Portfolios and Technologies (both created inline; an asset can belong to multiple of each).
Link one or more Products. This is the critical step: the asset–product link tells Molecule which commodity or instrument the asset's volumes apply to, and it is required for as-gen quantity derivation.
Enter Capacity , Ownership % , address, and Latitude/Longitude (both coordinates are required for the asset to appear in Map view).
Add Tags if applicable. The first tag (the book tag) must begin with
#— book tags control access when asset tag authorization is enabled.If the asset participates in inventory allocation, set Has Obligations for Allocation / Has Inventory for Allocation and an Eligibility Group as needed.
Click Save .
For a screenshot walkthrough of this form, see How to Create a New Asset.
Once saved, the asset is available for trade linking, asset valuation uploads, map display, and allocation workflows.
Disabling an asset is a soft action: it hides the asset from active lists but preserves all historical entries, valuations, and trade references. Re-enable it from the row action menu to edit it again.
Step 2 — Link the Asset to Products
The asset–product link is the prerequisite for both quantity derivation and asset-specific pricing.
Open the asset's edit view.
In the Products field, add each product the asset should supply.
Click Save .
Rules:
The relationship is many-to-many : one asset can supply multiple products, and one product can be fed by multiple assets.
Each (asset, product) pair must be unique — duplicate links are rejected.
Once linked, any as-gen trade referencing this asset + product can derive its quantity from the asset's entries, and asset-specific marks can be applied to the combination.
Step 3 — Configure the As-Gen (PPA) Product Family
An as-generated product represents energy delivered in proportion to an asset's output. Two product settings identify it:
Setting | Value | Effect |
Instrument subtype | PPA | Classifies the product and enables forward hourly entry generation |
Unit of measure (UOM) | % | Signals that trade quantity is a percentage of asset output, not an absolute volume |
A typical as-gen family is a cascading (stepwise) structure — monthly → daily → hourly trade products plus a dedicated marks product that holds the hourly prices. The hourly trade product's default marking formula points at the marks product. The end-to-end product configuration for this pattern is covered in How to Set Up a PPA in Molecule.
Alignment rules (the most common source of setup problems):
All products in the family — marks product, forecast/volume product, and trade products — must share the same time zone .
Marks and asset entries must both be at hourly (or sub-hourly) resolution . Coarser marks cannot be weighted correctly against hourly volumes.
Step 4 — Load the Volumetric Curve (Asset Entries)
Asset entries are the volumetric side of the stack: for each asset + product + contract period + as-of date they record a Position (volume), a Valuation, and a derived Changed P&L. Molecule keeps the full as-of history, so you can always answer "what did this look like as of date X?" (see As-Of Date).
Upload via the UI
Go to Assets (the list page — the upload lives there, not inside an individual asset).
Click Upload File → Asset Valuations and select your file.
Review validation results, correct any flagged rows, and confirm.
See also Importing Asset Data.
File format
Columns are identified by header name (order doesn't matter; spelling and casing must match exactly):
Header | Required | Description |
AS OF | Yes | Valuation date for the entry |
ASSET ID | Yes | Identifier of the asset (must exist in your account) |
PRODUCT | Yes | Product short name the volume applies to |
CONTRACT | Yes | Contract start date (delivery period being valued) |
VALUE | Yes | The quantity/volume for the period |
VALUATION | Yes | Mark-to-market value for the entry |
INTERVAL ENDING | Hourly only | Hour ending in HHMM format (0100 = hour ending 1 AM, 2400 = midnight). Required on every row when the product is hourly; ignored otherwise |
VALUATION RESULTS | Optional | JSON payload for structured model output (e.g., option Greeks) |
A downloadable XLSX template is linked from the upload screen. For hourly products, the interval ending is validated against the product's hourly interval and time zone.
Upload via the API
Asset valuations can also be written programmatically to the POST /api/v2/asset_valuations endpoint, authenticated with your standard x-email / x-token headers. The payload mirrors the file columns: as-of date, asset, product, contract period (plus interval ending for hourly), value, and valuation. This is the recommended path for recurring feeds such as daily demand or generation forecasts.
If you're new to the API, start with Getting Started with the Molecule API and How to Generate an API Token; the full endpoint catalog is in the API Documentation.
Note on "linking the curve to products via API": the volumetric curve is attached to a product simply by writing asset valuation rows against that product's short name for the linked asset. The asset→product link itself (Step 2) is configured on the asset; the API rows must reference an asset and product that are already linked.
What happens next
Entries are created or updated per unique asset + product + contract period + as-of (+ interval ending for hourly).
They appear in the asset's Valuations tab and in unified P&L — there is no distinction between entries created by upload, API, or models.
Any as-gen trade linked to the asset picks up the new volumes at its next valuation run.
Step 5 — Load the Price Curves (Marks)
Account-wide marks (the default)
A standard mark belongs to a product and applies to every trade in the account on that product and contract period. Saving a mark automatically re-queues valuation for all affected trades. Account-wide marks can come from:
Manual curve upload — the standard template (as-of date, product short names as columns, contract dates as rows). See How to Import Market Data Curves .
API upload — see How to Upload Market Data via API .
Automated vendor feeds — exchange and vendor integrations matched on product-level identifiers.
Derived/blended curves — built from other curves with Curve Builder .
When multiple sources exist for the same product/period/date, Molecule applies a source priority: a user mark overrides a vendor mark, which overrides preliminary and copied values. See Mark Levels for the full priority order.
Asset-specific marks
For multi-asset PPA portfolios, several assets can share one product but have different effective price shapes. Asset-specific marks solve this: they are regular marks additionally scoped to an asset + asset product combination, so each asset carries its own curve on a shared product.
Key rules:
An asset-specific mark must carry both the asset and asset-product references; a partially scoped mark is reachable by neither the asset-specific nor the account-wide pricing path.
Source priority applies exactly as for account-wide marks.
Vendor feeds never deliver asset-specific marks — they match on product identifiers and have no concept of an asset. Asset-specific curves reflect your asset's own profile and are always supplied by you (via upload pipeline or API), typically through your integration workflow with our team.
Hourly resolution and time-zone alignment with the asset entries are required (see Step 3).
Step 6 — Book the Asset-Linked (As-Gen) Trade
Book a trade against the as-gen product, setting Quantity as a percentage of asset output (e.g.,
100= 100% of generation/demand,50= half). Standard trade entry is covered in How to Enter a Trade .Set both the Asset and Asset Product fields on the trade. Both must be populated for quantity derivation to trigger.
At valuation time, Molecule computes
actualized_quantity = trade_quantity × asset_position / 100, whereasset_positionis the volume from the asset entries for each period. The trade's exposure then automatically tracks the asset's forecast or actual profile — no leg-by-leg quantity entry.
API booking — two-step flow. The Asset/Inventory reference cannot be set in the initial POST /api/v2/trades call. Create the trade first, then retrieve the auto-created ticket and update it with the asset/inventory reference in a second call.
Actuals require actualization. As-gen trades do not auto-populate delivered volume at booking. Until asset data is available/actualized, the settlement quantity is zero by design; actualization (or arrival of asset entry data) pushes actual quantities into settlement. To correct an actualized quantity, submit the corrected cumulative total, not a delta — multiple actualization records for the same period are summed.
How Valuation Comes Together
As-gen trades use the hourly forecasted average (HFA) mechanism: for each hour, the price from the marks product is weighted by the volume from the asset entries, then rolled up to daily and monthly levels. When either marks or asset entries change, dependent curves and valuations rebuild automatically.
In reporting:
Positionon an asset entry aligns with trade quantity.Valuationaligns with unrealized P&L.Changed P&Lis the day-over-day MTM change (prior business day on the CME calendar; if no prior entry exists, the change equals the full valuation).
Per-asset history is on the asset's Valuations tab (filter by as-of date, product, contract period). Portfolio views of trade-side results live on the Valuations screen; higher-level views (hedge coverage, exposure vs. demand, etc.) are delivered as configured reports — see below.
Common Setup Issues
Symptom | Likely cause / fix |
Upload rejected — missing headers | One of the six required columns is absent. Header spelling/casing must match exactly; download the template from the error message |
"Must provide interval ending on row N" | Product is hourly but the row's INTERVAL ENDING is blank — supply HHMM values |
"Invalid interval ending on row N" | Value doesn't fit the product's hourly interval/time zone |
As-gen trade shows zero quantity | Asset entries not yet loaded/actualized for the period, or the Asset/Asset Product fields aren't both set on the trade, or the asset isn't linked to the product |
Hourly valuations look shifted | Time-zone mismatch between marks product, volume product, and trade products |
Weighted average looks wrong | Marks and asset entries at mismatched resolutions — both must be hourly (or sub-hourly) |
Entries not visible in P&L | The As-Of Date filter must match the as-of of the uploaded entries |
About the Sample Retailer Model in Your Test Environment
Your UAT account is pre-loaded with a worked power retailer example (PJM PSEG zone, fixed/floating retail structure) so you can explore the stack with realistic data. General behavior of test environments (access, data refresh cycles) is covered in Customer Test Environments. Three things to know about the sample data:
The "Retail Imbalance" asset. The sample model splits retail demand into fixed-price and variable-price demand assets, plus an imbalance asset that carries the residual between forecast/hedged demand and actual settled volumes. Its entries are trued up as actual/settlement data arrives (for example, when final settlement or invoice volumes are loaded) — so yes, conceptually it is the volume true-up component of the retail position. Your Molecule contact can walk through the exact true-up convention used in the sample.
The two hourly forward curves. The curves under Market Data are illustrative sample marks uploaded by Molecule as part of the UAT build — mark-to-market curves for the retail demand products, loaded at hourly resolution through December 2026 (the sample data horizon). They are not a live vendor feed; in production you would source equivalent curves from your own market data, a vendor integration (for account-wide curves), or your asset-specific pipeline.
The hedge-ratio and exposure reports. The reports shown in the demo (hedge ratio / coverage and related metrics) are configured custom reports, built per account — they are not part of the default Reports list. They are being set up and enabled on your UAT account and assigned to your users; once granted, they will appear under Reports for your logins. If you don't see them yet, that step is still in progress — your account manager can confirm timing.