When to Use
Use this skill in multi-strategy platforms, quantitative research hubs, and internal alpha marketplaces where proprietary signals or alt-data features (e.g. NLP Sentiment, Options Flow, Satellite Spend) are shared across multiple sub-strategy pods or legal entities. Reusing signals scales R&D efficiency, but requires strict entitlement access control, capacity tracking ($\sum \text{AUM}{\text{active}} \le \text{Capacity}{\text{max}}$), and a recorded internal fee ($\text{Fee} = \text{Base Fee} + \text{PnL Share} \times \max(0, \text{PnL} - \text{Loss Carryforward})$) that a transfer pricing analysis can be attached to.
When NOT to Use
- As a substitute for a transfer pricing analysis. This module applies a schedule a human already negotiated and benchmarked; it does not determine, test, or certify that the schedule is arm's length.
arm_length_documentedreports only whether a benchmarking reference was attached — it is a documentation-presence flag, never a compliance opinion. Comparability analysis under OECD TPG 2022 Chapters I and VI, and the Chapter V master file / local file record, remain a tax adviser's work. - To justify the OECD 5% low value-adding mark-up. A proprietary alpha signal is core business, is R&D output, and is a unique and valuable intangible, so it is excluded from the Chapter VII simplified approach by paras 7.45 and 7.47 — the 5% mark-up of para 7.61 does not apply to it. Do not price a signal licence that way.
- As the sole capacity control. AUM is a coarse proxy. Two pods running the same $20M against the same signal at 10x different turnover crowd it very differently; capacity that actually binds is about traded notional, participation rate, and holding-period overlap. Pair with
strategy-capacity-estimation-before-scaling-capitalandcross-strategy-correlation-monitoring. - As the vendor-licence control for third-party data. Redistributing a vendor's data, or a value derived from it, to another entity or business unit is governed by that vendor's or venue's own agreement (derived-data and non-display terms differ per venue and are commonly audited). This engine tracks internal entitlement only — use
market-data-entitlement-and-licensing-per-venueanddata-vendor-contractual-usage-restriction-trackingfor the external permission. - As a live pre-trade gate. Entitlement is evaluated at subscription time, not per order. It does not observe what a pod actually trades after the grant.
Prerequisites
- Registered signal metadata (
signal_id,signal_name,owner_entity,base_license_fee_annual_usd,pnl_share_pctas a fraction in [0, 1],max_aum_capacity_usd). - Strategy pod subscription requests (
subscription_idunique per grant,strategy_id,signal_id,consumer_entity,allocated_aum_usd). - A negotiated licence schedule with a benchmarking reference (comparability study or intercompany agreement id) to record against each fee calculation.
Workflow
-
Signal Catalog & Capacity Registration: Register licensing parameters and the capacity cap. Re-registering an existing
signal_idrequiresreplace=True— an unnoticed overwrite silently re-prices and re-caps every live subscription, so the engine refuses it by default and logs a warning with the already-subscribed AUM when you do opt in. -
Entitlement Access Verification:
- Reject structurally invalid input at the boundary rather than absorbing it. NaN is the case that matters:
nan > capis False, so an unchecked NaN AUM would be granted and would then make every later capacity sum NaN, permanently disabling the only control that exists. Negative AUM would likewise manufacture headroom. Both raise. - Verify total ACTIVE subscribed AUM: $\sum \text{AUM}{\text{sub}} + \text{AUM}{\text{new}} \le \text{Max Capacity}$, compared with a small relative tolerance so a projection landing exactly on the cap is not denied by float accumulation.
- A denial is not recorded, so a rejected pod never consumes headroom. A duplicate
subscription_idraises instead of overwriting — silently replacing a record erases one pod's entitlement history while its AUM is still counted. - Revoke with
revoke_subscription()to release capacity. The record is retained withis_active=Falseso the entitlement history stays auditable, and revocation is idempotent.
- Reject structurally invalid input at the boundary rather than absorbing it. NaN is the case that matters:
-
Internal Fee Attribution:
- $\text{Fee}_{\text{total}} = \text{Base Fee} + \text{PnL Share Pct} \times \max\left(0, \text{PnL} - \text{Loss Carryforward}\right)$.
- Carry unrecouped losses forward (a high-water mark). Without it a pod that loses $10M then makes $1M pays a share on the full $1M — a term no unrelated licensee would accept, and exactly the kind of divergence from third-party behaviour a transfer pricing review targets. The report returns
remaining_loss_carryforward_usdto roll into the next period. - Billing a revoked subscription raises. So does a fee calculation whose underlying signal is no longer cataloged — the terms are unknown, so do not guess them.
- Attach
benchmarking_evidence_ref. Calculating without one logs a warning and setsarm_length_documented=False; that is the honest state, not a failure to be suppressed.
-
Audit Reporting: Generate a structured
SignalLicensingAuditReport— capacity utilisation, remaining headroom, active and revoked subscription ids, consumer entities, and thepricing_basisnote recording why the Chapter VII simplified approach does not apply.
Full procedure: see
references/workflows.md. Standards reference: seereferences/standards.md. Printable pre-flight checklist: seeassets/checklist.md.
Common Pitfalls
- Asserting Arm's-Length Compliance From The Fee Itself: A fee being non-zero says nothing about whether it is arm's length. Any boolean named
arm_length_compliantthat is computed from the fee amount is a fabricated compliance opinion that will be read as fact by whoever reads the intercompany file. Report documentation presence, and cite the pricing basis. - Applying The 5% Low Value-Adding Mark-Up To Alpha: The OECD simplified approach explicitly excludes core-business services, R&D services, and anything using or creating unique and valuable intangibles (TPG 2022 paras 7.45, 7.47). A proprietary signal is all three.
- Un-capped Signal Capacity: Allowing too many strategy pods to trade the same alpha, degrading realised performance through self-cannibalisation — the pods crowd each other's fills and shorten the signal's half-life.
- Fail-Open Capacity Arithmetic: NaN or negative AUM slipping into the subscribed sum silently disables the cap for every subsequent request. Validate at the dataclass boundary, not at the comparison.
- Overwriting A Live Subscription Id: Keying subscriptions by id and assigning blindly lets a re-submission erase another pod's grant while its AUM is still counted against capacity, or lets one pod consume headroom twice. Require an explicit revoke first.
- Retroactive Re-Pricing: Re-registering a signal with new terms silently changes the fee schedule and cap for subscriptions already granted under the old ones. Existing grants must be re-reviewed, not quietly migrated.
- Billing Revoked Entitlements: Fee calculation that ignores
is_activekeeps charging a pod that no longer has access, overstating the intercompany charge in both entities' books. - No Loss Carryforward: A performance share on gross positive PnL with no high-water mark charges the licensee on the same dollars twice across a drawdown-and-recovery cycle.
- Ignoring Cross-Border Substance: Transferring proprietary signals between a US research hub and a UK/HK execution desk without an intercompany agreement, a DEMPE analysis of who actually develops and controls the signal, and Chapter V documentation invites adjustment and penalties. Entity name inequality (
is_cross_entity) is a routing hint, not a jurisdiction determination. - Un-tracked Subscriptions: Consuming proprietary alt-data signals without logging entitlement permissions, violating third-party vendor redistribution and derived-data contracts.
- Check-Then-Grant Races: Two concurrent requests can each pass against the same headroom. The engine serialises its own catalog and register; the caller must still serialise its own capital-allocation state.
Verification
- Instantiate
SignalReuseAndLicensingEngine. RegisterSIG_SENTIMENT_01(base fee $10,000, 5% PnL share, max AUM $50M). SubscribePod_Alpha($20M) andPod_Beta($25M) and verify both are entitled. AttemptPod_Gammaat $15M (total $60M > $50M) and verify it is denied and not recorded —get_subscribed_aummust still read $45M. - Verify a request landing exactly on the cap ($5M against $45M subscribed) is granted, and one dollar beyond is denied.
- Verify
StrategySubscription(..., allocated_aum_usd=float("nan"))raises, and that a duplicatesubscription_idraisesDuplicateRegistrationErrorwithout disturbing the existing grant. - Verify
revoke_subscriptionreleases capacity, is idempotent, and that billing the revoked subscription raisesSignalLicensingError. - Calculate fee attribution for
Pod_Alphawith $1M PnL: $10,000 + 5% × $1M = $60,000 total. Repeat with a $10M loss carryforward and verify the shareable PnL is $0, the total is the $10,000 base fee only, and $9M carries forward. - Verify
arm_length_documentedis False when nobenchmarking_evidence_refis supplied, regardless of fee size. - Run
python -m unittest discover -s skills/cross-strategy-signal-reuse-and-licensing/scriptsand confirm a 100% pass rate.
Related Skills
cross-strategy-tax-lot-optimizationtransfer-pricing-for-multi-entity-trading-operationsstrategy-capacity-estimation-before-scaling-capitaldata-vendor-contractual-usage-restriction-trackingmarket-data-entitlement-and-licensing-per-venue