Reject OO strikes more than 1% from amplitude high/low.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-07 17:50:12 +08:00
parent 6d63c52ae0
commit 0daac05ef5
9 changed files with 124 additions and 19 deletions
+3
View File
@@ -373,6 +373,7 @@ export type PlanState = {
oo_min_option_hours?: number;
oo_min_leverage?: number;
oo_reward_ratio?: number;
oo_strike_max_dev_pct?: number;
oo_put_qty_eth?: number;
sizing_mode?: "manual" | "risk_based";
risk_based?: boolean;
@@ -428,6 +429,8 @@ export type StrategySettings = {
oo_min_leverage?: number;
oo_reward_ratio?: number;
oo_budget_cushion?: number;
oo_strike_max_dev_pct?: number;
oo_strike_max_dev_pct?: number;
exchange?: string;
};
+1
View File
@@ -265,6 +265,7 @@ export default function PlanPage() {
: "ATM偏差关";
const ooSelectLabel = [
`振幅≤${fmt(plan?.oo_amplitude_pct ?? 1.5, 1)}%/${fmt(plan?.oo_amplitude_hours ?? 12, 0)}h`,
`贴高低≤${fmt(plan?.oo_strike_max_dev_pct ?? 1, 1)}%`,
"虚值Call@高·Put@低",
`剩余≥${fmt(plan?.oo_min_option_hours ?? 24, 0)}h`,
`杠杆≥${fmt(plan?.oo_min_leverage ?? 200, 0)}x`,
+20 -1
View File
@@ -115,6 +115,7 @@ export default function SettingsPage() {
const [ooAmpHours, setOoAmpHours] = useState(12);
const [ooMinHours, setOoMinHours] = useState(24);
const [ooMinLev, setOoMinLev] = useState(200);
const [ooStrikeDev, setOoStrikeDev] = useState(1);
const [ooRewardRatio, setOoRewardRatio] = useState(2);
const [riskPreview, setRiskPreview] = useState<Record<string, unknown> | null>(
null,
@@ -236,6 +237,7 @@ export default function SettingsPage() {
setOoAmpHours(s.oo_amplitude_hours ?? 12);
setOoMinHours(s.oo_min_option_hours ?? 24);
setOoMinLev(s.oo_min_leverage ?? 200);
setOoStrikeDev(s.oo_strike_max_dev_pct ?? 1);
setOoRewardRatio(s.oo_reward_ratio ?? 2);
setRiskPreview(
s.risk_sizing_preview && typeof s.risk_sizing_preview === "object"
@@ -412,6 +414,7 @@ export default function SettingsPage() {
oo_amplitude_hours: ooAmpHours,
oo_min_option_hours: ooMinHours,
oo_min_leverage: ooMinLev,
oo_strike_max_dev_pct: ooStrikeDev,
oo_reward_ratio: ooRewardRatio,
exchange,
};
@@ -1281,8 +1284,24 @@ export default function SettingsPage() {
value={ooMinLev}
onChange={(e) => setOoMinLev(Number(e.target.value))}
/>
</div>
<div className="field">
<label htmlFor="ooStrikeDev">%</label>
<input
id="ooStrikeDev"
className="mono"
type="number"
step="0.1"
min="0.1"
max="10"
value={ooStrikeDev}
onChange={(e) =>
setOoStrikeDev(Number(e.target.value))
}
/>
<p className="hint" style={{ margin: "0.35rem 0 0" }}>
Call Put 使 ATM/
Call/Put / |KHL|/HL
1%
</p>
</div>
</>