diff --git a/README.md b/README.md index a4828e3..be3a249 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,21 @@ To deploy the application, follow these steps: netlify deploy --prod ``` +## Data Update Frequencies + +- **Delta/Gamma** + Based on [Tradier documentation](https://documentation.tradier.com/brokerage-api/markets/get-options-chains), greeks values (delta/gamma) are updated every hour. + +- **Open Interest** + Open interest data is updated **overnight**. + +- **Volume** + Volume is updated **live**. + +- **Spot Price** + The spot price is **live** and updates in real time during market hours. + - For **historical Delta/Gamma (DEX/GEX)** charts, the **last closing price** is used as the spot price. + ## Contributing We welcome contributions to the project! If you have suggestions or improvements, please follow these steps: diff --git a/src/app/options/analyze/[symbol]/C.tsx b/src/app/options/analyze/[symbol]/C.tsx index b362184..e13e776 100644 --- a/src/app/options/analyze/[symbol]/C.tsx +++ b/src/app/options/analyze/[symbol]/C.tsx @@ -3,7 +3,7 @@ import { Expo, typeMap } from "@/components/Expo"; import { TickerSearchDialog } from "@/components/TickerSearchDialog"; import { calculateHedgingV2, getCalculatedStrikes } from "@/lib/dgHedgingHelper"; import { DexGexType, MiniOptionContract } from "@/lib/types"; -import { FormControl, InputLabel, Select, MenuItem, Box, Tab, Tabs, Paper, Container } from "@mui/material"; +import { FormControl, InputLabel, Select, MenuItem, Box, Tab, Tabs, Paper, Container, Typography } from "@mui/material"; import dayjs from "dayjs"; import { useRouter } from "next/navigation"; import { parseAsInteger, parseAsString, parseAsStringEnum, useQueryState } from "nuqs"; @@ -35,8 +35,8 @@ export const C = (props: { symbol: string, cachedDates: string[], dte: number, s const tillDate = dayjs().add(dte, 'day'); return data.filter(r => dayjs(r.expiration_date) <= tillDate); }, [dte]); - const allStrikes = useMemo(() => getCalculatedStrikes(price, strikeCounts, [...filteredData.reduce((p,c)=> p.add(c.strike) , new Set())]), [strikeCounts]); - const allDates = useMemo(() => [...filteredData.reduce((p,c)=> p.add(c.expiration_date) , new Set())].sort(), [dte]); + const allStrikes = useMemo(() => getCalculatedStrikes(price, strikeCounts, [...filteredData.reduce((p, c) => p.add(c.strike), new Set())]), [strikeCounts]); + const allDates = useMemo(() => [...filteredData.reduce((p, c) => p.add(c.expiration_date), new Set())].sort(), [dte]); const { exposureData } = useMemo(() => { return calculateHedgingV2(data, allStrikes, allDates, price) }, [dte, strikeCounts, allStrikes, allDates]); @@ -80,6 +80,9 @@ export const C = (props: { symbol: string, cachedDates: string[], dte: number, s + + Click here to know more about when this data updates + {/* */} {/*