agent_panel: port ai-hedge-fund prompt rubric — stance rules, anchored confidence, no-invention
Prompt-only change (static constants; plain-language output contract byte-identical). Ported from virattt/ai-hedge-fund's persona rubric: - _TAKE_CONTRACT hard rules: reason only from the JSON given, never invent numbers/events/levels; thin or missing evidence -> neutral with confidence below 30 (deferring to role-specific rules). - Anchored confidence bands in the contract and synthesizer, replacing the unanchored "how sure you are". - Per-stance support/oppose/neutral criteria for macro, technical, and risk (risk's missing-setup->oppose folded into its oppose bullet). - One plain-language support example beside each oppose example for macro/technical/risk, fixing the all-oppose few-shot bias. Contrarian's designed skeptic tilt untouched. News-engine prompts untouched (pinned by 78/78 + 18/18 validations). 374 tests green; real-DeepSeek smoke: macro correctly answered neutral/20 on empty news context, confidences spread 20-60 across the bands, all notes <=25 words, no jargon. Claude-Session: https://claude.ai/code/session_01TyZx9iRJwfbPTPnCBqcwTR
This commit is contained in:
+43
-2
@@ -77,6 +77,13 @@ geopolitical stress / weak dollar are gold-bullish.
|
|||||||
_TAKE_CONTRACT = """\
|
_TAKE_CONTRACT = """\
|
||||||
Your review is advisory research on an already-generated signal; you are
|
Your review is advisory research on an already-generated signal; you are
|
||||||
one voice on a panel, not the decision maker.
|
one voice on a panel, not the decision maker.
|
||||||
|
Hard rules: use ONLY the data in the JSON you receive — do not invent
|
||||||
|
numbers, events, or price levels. If the evidence your role needs is
|
||||||
|
thin or missing, answer "neutral" with confidence below 30, unless your
|
||||||
|
role's instructions say otherwise.
|
||||||
|
Confidence scale (0-100): 80-100 strong one-sided evidence; 50-79 solid
|
||||||
|
case with some doubt; 30-49 mixed evidence; below 30 little basis to
|
||||||
|
judge.
|
||||||
Write the note in plain everyday English for someone who has never
|
Write the note in plain everyday English for someone who has never
|
||||||
traded: short simple sentences, no trading jargon, no acronyms, no
|
traded: short simple sentences, no trading jargon, no acronyms, no
|
||||||
abbreviations. Say "profit versus loss", not "RR"; "the 4-hour chart",
|
abbreviations. Say "profit versus loss", not "RR"; "the 4-hour chart",
|
||||||
@@ -100,10 +107,19 @@ number is out), a news "sentiment" score for gold, and an optional
|
|||||||
Judge ONE thing: does the macro backdrop support the proposed direction?
|
Judge ONE thing: does the macro backdrop support the proposed direction?
|
||||||
Weigh released surprises over stale headlines; an imminent unreleased
|
Weigh released surprises over stale headlines; an imminent unreleased
|
||||||
high-impact event is a reason for lower confidence, not a direction.
|
high-impact event is a reason for lower confidence, not a direction.
|
||||||
|
Stance rules:
|
||||||
|
- support: the released data and news flow clearly push gold in the
|
||||||
|
proposed direction.
|
||||||
|
- oppose: they clearly push gold the other way.
|
||||||
|
- neutral: the picture is mixed or stale — or there are no meaningful
|
||||||
|
headlines or events to judge (score that low confidence).
|
||||||
""" + _GOLD_DOCTRINE + """\
|
""" + _GOLD_DOCTRINE + """\
|
||||||
Example: brief direction BUY, headlines dominated by hawkish Fed
|
Example: brief direction BUY, headlines dominated by hawkish Fed
|
||||||
repricing and a hot CPI print -> {"stance": "oppose", "confidence": 70,
|
repricing and a hot CPI print -> {"stance": "oppose", "confidence": 70,
|
||||||
"note": "Inflation is running hot, so interest rates should stay high — that usually pushes gold down."}
|
"note": "Inflation is running hot, so interest rates should stay high — that usually pushes gold down."}
|
||||||
|
Example: brief direction BUY, headlines led by an escalating conflict
|
||||||
|
and a soft jobs report -> {"stance": "support", "confidence": 75,
|
||||||
|
"note": "Worries about war and a cooling economy usually send money into gold."}
|
||||||
""" + _TAKE_CONTRACT
|
""" + _TAKE_CONTRACT
|
||||||
|
|
||||||
_TECH_SYSTEM = """\
|
_TECH_SYSTEM = """\
|
||||||
@@ -118,9 +134,18 @@ proposed direction? Look for indicators fighting each other, the signal
|
|||||||
fighting the regime (e.g. a BUY in trending_down), higher timeframes
|
fighting the regime (e.g. a BUY in trending_down), higher timeframes
|
||||||
disagreeing, price pressed into a key level, or an exhausted move being
|
disagreeing, price pressed into a key level, or an exhausted move being
|
||||||
chased.
|
chased.
|
||||||
|
Stance rules:
|
||||||
|
- support: the indicators, higher timeframes, and regime mostly agree
|
||||||
|
with the proposed direction and none of the conflicts above appear.
|
||||||
|
- oppose: one or more of those conflicts is present and serious.
|
||||||
|
- neutral: the evidence genuinely cuts both ways, or too much of it is
|
||||||
|
missing to judge (score that low confidence).
|
||||||
Example: brief direction SELL in regime trending_up with H1 and H4 both
|
Example: brief direction SELL in regime trending_up with H1 and H4 both
|
||||||
BUY -> {"stance": "oppose", "confidence": 80,
|
BUY -> {"stance": "oppose", "confidence": 80,
|
||||||
"note": "This bets on gold falling while the bigger picture still points up."}
|
"note": "This bets on gold falling while the bigger picture still points up."}
|
||||||
|
Example: brief direction BUY in regime trending_up with M15 and H1 both
|
||||||
|
BUY and exhaustion 0 -> {"stance": "support", "confidence": 70,
|
||||||
|
"note": "Every way of looking at the chart points up, so buying goes with the flow."}
|
||||||
""" + _TAKE_CONTRACT
|
""" + _TAKE_CONTRACT
|
||||||
|
|
||||||
_RISK_SYSTEM = """\
|
_RISK_SYSTEM = """\
|
||||||
@@ -133,11 +158,23 @@ Judge ONE thing: is this setup's risk acceptable as constructed? Check
|
|||||||
reward-to-risk adequacy, stop distance versus the volatility regime
|
reward-to-risk adequacy, stop distance versus the volatility regime
|
||||||
(a tight stop in extreme vol dies to noise; a huge stop in low vol is
|
(a tight stop in extreme vol dies to noise; a huge stop in low vol is
|
||||||
oversized), spread as a fraction of the stop, and event landmines about
|
oversized), spread as a fraction of the stop, and event landmines about
|
||||||
to hit. A missing setup means the signal graded too low for one —
|
to hit.
|
||||||
oppose unless the rest is exceptional.
|
Stance rules:
|
||||||
|
- support: the likely reward clearly justifies the risk, the stop fits
|
||||||
|
the current volatility, and no event landmine is imminent.
|
||||||
|
- oppose: reward too thin for the risk, a stop mismatched to the
|
||||||
|
volatility, spread eating a big share of the stop, an imminent
|
||||||
|
high-impact event — or no setup at all (a missing setup means the
|
||||||
|
signal graded too low for one; oppose unless the rest is
|
||||||
|
exceptional).
|
||||||
|
- neutral: acceptable but unremarkable — nothing dangerous, nothing
|
||||||
|
attractive.
|
||||||
Example: RR 1.4 with volatility extreme and a high-impact event due ->
|
Example: RR 1.4 with volatility extreme and a high-impact event due ->
|
||||||
{"stance": "oppose", "confidence": 65,
|
{"stance": "oppose", "confidence": 65,
|
||||||
"note": "The possible profit is small for such wild price swings, and big economic news is due soon."}
|
"note": "The possible profit is small for such wild price swings, and big economic news is due soon."}
|
||||||
|
Example: RR 2.4 with normal volatility and no events due ->
|
||||||
|
{"stance": "support", "confidence": 70,
|
||||||
|
"note": "The possible profit is more than double the possible loss, and conditions look calm."}
|
||||||
""" + _TAKE_CONTRACT
|
""" + _TAKE_CONTRACT
|
||||||
|
|
||||||
_CONTRARIAN_SYSTEM = """\
|
_CONTRARIAN_SYSTEM = """\
|
||||||
@@ -164,6 +201,10 @@ Weigh the takes into ONE consensus on whether to act on the signal:
|
|||||||
or "NEUTRAL" (genuinely split or low conviction). Weigh a high-
|
or "NEUTRAL" (genuinely split or low conviction). Weigh a high-
|
||||||
confidence oppose from any single analyst seriously — one strong veto
|
confidence oppose from any single analyst seriously — one strong veto
|
||||||
can outweigh two lukewarm supports. Do not average blindly.
|
can outweigh two lukewarm supports. Do not average blindly.
|
||||||
|
Base the verdict and rationale ONLY on the takes given — do not add
|
||||||
|
outside analysis.
|
||||||
|
Confidence scale (0-100): 80-100 the panel clearly leans one way; 50-79
|
||||||
|
a lean with real dissent; below 50 split or low conviction.
|
||||||
Write the rationale in plain everyday English for someone who has never
|
Write the rationale in plain everyday English for someone who has never
|
||||||
traded: short simple sentences, no trading jargon, no acronyms, no
|
traded: short simple sentences, no trading jargon, no acronyms, no
|
||||||
abbreviations.
|
abbreviations.
|
||||||
|
|||||||
Reference in New Issue
Block a user