OptionEx
隐私政策
Privacy Policy · 生效及最近更新日期:2026-11-09 · English version
本政策发布于 https://optionex.gansapp.com/privacy。支持页面:https://optionex.gansapp.com/support。产品介绍:https://optionex.gansapp.com。
本政策说明 iOS 应用 OptionEx(Bundle ID:gankin.OptionEx3,最低 iOS 18.6)在为本版本核对过的源码里如何处理信息。它不描述 gansapp.com 上的 Gansapp 门户。门户请看Gansapp 隐私政策。
本文不能代替 Apple 的系统诊断、设备备份行为,也不能代替 App Store Connect 里的隐私配置。它不是一份绝对零跟踪声明。
责任人
OptionEx 由个人开发者 Kin Gan 提供,不是一家公司。你发给 support@gansapp.com 的邮件,由 Kin Gan 处理。
不是投资建议,也不提供交易场所
OptionEx 是独立的期权记录与分析工具,包含 Portfolio、Analytics、Radar、Journal、Settings 五个部分。手工记录、展期和平仓只修改 App 里的账本。已核对的源码没有下单、改单、撤单或转账。本应用不提供投资建议。盈亏、行情和筛选结果可能不完整或不及时。
本网站
https://optionex.gansapp.com 只发布产品介绍、支持说明和本政策。页面上没有注册表单,也不提交持仓、Flex token 或报表。
设备上的账本
你手工记下的持仓,以及从 CSV 或 IBKR Flex 导入的持仓,保存在设备上的本地数据库里,用来显示持仓、盈亏和分析。笔记以 JSON 保存在本机偏好设置中,不属于下面的 iCloud 持仓模型。
没有发现应用层为这些本地数据加密。这不能承诺硬件级加密,也不能承诺系统备份永远不会包含这些数据。备份和 iCloud 会不会留下副本、删除后已有备份里是否还在,由 Apple 的设置决定。这些规则没有另行核实,本政策不作保证。
在已核对的出站请求里,没有发现上传 CSV 文件本身。
IBKR Flex
如果你连接 IBKR Flex,Flex token 保存在系统钥匙串中,并在 App 运行期间留在内存里。Query ID 保存在本机偏好设置中。
拉取报表时,App 通过 HTTPS 直接把 token、query 和 reference 发给 IBKR Flex 的 SendRequest、GetStatement,以及 IBKR 返回的报表地址。App 不收集 IBKR 密码或双重验证码。
完整 Flex 报表会以 JSON 暂存在 App 缓存目录。默认大约保留 10 分钟;过期以后,要等到下次读取才会清除,而不是承诺在那一分钟自动从磁盘消失。没有发现对这份缓存做应用层加密。这不能承诺硬件级加密,也不能承诺缓存文件绝不进入系统备份。
已核对的源码没有发现 App 把 Flex 报表、持仓明细或 Flex token 发给下面的筛选后端或 Finnhub。
截图识别
你可以用系统照片选择器挑选截图。文字识别在设备上完成。没有发现上传这些图片。
网络请求
雷达把你选择的策略、交易日、最低权利金、排序和代码,以 POST 发到我们为 OptionEx 运营、运行在 Convex 上的后端,用来查询公开筛选数据。标志图以 GET 把代码发到同一后端。本政策不公布该后端的部署地址。
未平仓持仓的行情以 GET 向 Finnhub(finnhub.io)发送标的代码以及该服务要求的接口参数,不发送持仓数量、成本或盈亏。
这些请求说明本应用不是一台完全离线的程序。本政策不声称没有服务器。
请求经过互联网。接收方以及网络路径通常还会处理完成连接所需的技术信息,例如 IP 地址和时间。本政策不声称这些信息不会被处理,也不编造 IBKR、Finnhub 或该后端的日志保留天数。
已看到的界面引导是中文和英文。这不表示另有按地区划分的数据服务器,也不承诺数据只留在某个国家。
可选 iCloud
iCloud 同步默认关闭。你打开之后,持仓记录进入你自己的私有 CloudKit 数据库,重启 App 后生效。若本地保存失败,会退回只使用本地数据。
这不等于全部数据都只在本机,也不等于 token、笔记、Query ID 和 Flex 缓存都会同步。已核对的同步对象是持仓记录。笔记不在该 CloudKit 模型中。钥匙串是否跟随 Apple ID,由系统设置决定;本政策不把这一点写成已经核实。
支持邮件
App 内反馈会打开系统 Mail,收件人是 support@gansapp.com,并预填 App 版本、build 和 iOS 版本。邮件由你主动发送。你另外写上或附上的内容也会一并到达。请不要发送 Flex token、Query ID、密码、验证码、完整报表或完整账户号码。
这份源码里没有发现的内容
在为本政策核对的源码里,没有发现 OptionEx 自己的注册或登录,没有发现付费墙或 App 内购买交易流程,也没有发现广告 SDK、App Tracking Transparency、第三方分析 SDK 或第三方崩溃收集 SDK。StoreKit 只用于请求评分。
「没有发现」不等于以后不会改变,不能代替 Apple 系统诊断,不能代替 App Store Connect 的隐私回答,也不是绝对零跟踪。
删除能到哪一步
没有一步清空全部分类数据的操作。
- 断开 IBKR:删除 Flex token、Query ID、同步时间和 Flex 缓存。已经导入的持仓会保留。
- Reset All Trades:硬删除持仓记录。不删除笔记、钥匙串里的 token 或 Query ID。
- 删除单笔持仓目前是软删除。本政策不能承诺该记录已经立即永久抹掉。
- 笔记单独存放。断开 IBKR 和 Reset All Trades 都不会删除笔记。本政策不描述一个核对时没有发现的「清空全部笔记」按钮。
没有财务账本的 CSV 导出。分享单条日志会经系统分享送出文本,文本可能包含合约和盈亏,接收方由你选择。
卸载 App、系统备份或 iCloud 是否仍留有副本,由 Apple 决定。删除会不会进入已有备份,尚未核实,也不作保证。你可以发邮件给 support@gansapp.com,写明已经做了哪一步,用来询问这一步覆盖什么。App 不能远程替你清空设备。
保留
设备上的持仓、笔记和钥匙串项目会保留到你使用上一节的操作,或直到系统处理卸载和备份。Flex 缓存默认大约 10 分钟,过期后在下次读取时清除。
支持邮件为答复你而保留。应用源码和本网站都没有一个可以写成固定天数的期限,因此本政策不编造天数。对 IBKR、Finnhub 和筛选后端所持技术日志的保留期限,同样不编造。
联系与日期
邮件 support@gansapp.com。支持页面:支持与帮助。生效及最近更新:2026-11-09。
© 2026 Kin Gan
Privacy Policy
Effective / last updated: 2026-11-09. If the Chinese and English versions differ, the Chinese version prevails, except where the law of your place of residence requires otherwise.
This policy is published at https://optionex.gansapp.com/privacy. Support: https://optionex.gansapp.com/support. Product introduction: https://optionex.gansapp.com.
It describes how the iOS app OptionEx (Bundle ID: gankin.OptionEx3, minimum iOS 18.6) handles information in the source that was reviewed for this version. It does not describe the Gansapp portal at gansapp.com. For that site, see the Gansapp Privacy Policy.
This text cannot stand in for Apple system diagnostics, device backup behavior, or the privacy answers configured in App Store Connect. It is not an absolute zero-tracking statement.
Who is responsible
OptionEx is offered by Kin Gan, an individual developer, not by a company. For messages you send to support@gansapp.com, Kin Gan handles that correspondence.
Not advice, and not a trading venue
OptionEx is an independent options ledger and analytics tool with five areas: Portfolio, Analytics, Radar, Journal, and Settings. Manual records, rolls, and closes change the ledger inside the app. The reviewed source has no order placement, modification, cancellation, or transfer. The app is not investment advice. Profit and loss, quotes, and screener results may be incomplete or delayed.
This website
https://optionex.gansapp.com publishes the introduction, support, and this policy. It has no signup form and does not submit positions, Flex tokens, or statements.
Ledger on the device
Positions you enter by hand, or import from CSV or an IBKR Flex statement, are stored in a local database on the device so the app can show positions, profit and loss, and analytics. Notes are stored as JSON in local preferences. They are not part of the iCloud holdings model described below.
No app-level encryption of that local data was found. That is not a promise of hardware-backed encryption, and it is not a promise that a system backup will never contain the data. Backup and iCloud copies, and whether a deletion removes copies already in a backup, are controlled by Apple settings. Those rules were not separately verified, and this policy does not guarantee them.
No upload of the CSV file itself was found among the outbound requests that were reviewed.
IBKR Flex
If you connect IBKR Flex, the Flex token is stored in the system Keychain and is also kept in memory while the app is running. Query IDs are stored in local preferences.
To fetch a statement, the app sends the token, query, and reference over HTTPS directly to IBKR Flex SendRequest, GetStatement, and the statement URL IBKR returns. The app does not collect an IBKR password or two-factor code.
The full Flex statement is kept temporarily as JSON in the app cache directory. The default lifetime is about 10 minutes. After it expires, it is cleared on the next read, not by a promise that the file disappears from disk at that exact minute. No app-level encryption of this cache was found. This is not a promise of hardware-backed encryption, and it is not a promise that the cache file can never be included in a system backup.
The reviewed source did not show the app sending Flex statements, position details, or the Flex token to the screener backend described below or to Finnhub.
Screenshot recognition
You can pick a screenshot with the system photo picker. Text recognition runs on the device. No upload of those images was found.
Network requests
Radar sends the strategy, trade date, minimum premium, sort, and ticker you choose, in a POST, to a backend operated for OptionEx on Convex, to query public screener data. Logo lookups send the ticker to that same backend with a GET. This policy does not publish that backend’s deployment address.
Quotes for open positions send the symbol, and the parameters that quote service requires, to Finnhub (finnhub.io) with a GET. They do not include position size, cost, or profit and loss.
These requests mean the app is not an offline-only program. This policy does not claim that there is no server.
Requests travel over the internet. Recipients, and the network path, ordinarily also process technical information needed to complete the connection, such as IP address and time. This policy does not claim that information is not processed. It also does not invent a retention period for logs at IBKR, Finnhub, or that backend.
The in-app guidance that was reviewed is in Chinese and English. That does not mean a separate regional data server exists, and it does not promise that data stays in a particular country.
Optional iCloud
iCloud sync is off by default. If you turn it on, position records go to your private CloudKit database and the change takes effect after you restart the app. If the local save fails, the app falls back to local data.
That is not the same as “all data stays only on this device,” and it does not mean the token, notes, Query IDs, and Flex cache are all synchronized. The sync that was reviewed covers position records. Notes are not in that CloudKit model. Whether the Keychain follows an Apple ID is decided in system settings; this policy does not treat that as verified.
Support email
In-app feedback opens system Mail to support@gansapp.com and prefills the app version, build, and iOS version. You send the message yourself. Anything else you write or attach is included. Do not send a Flex token, Query ID, password, verification code, full statement, or full account number.
What the reviewed source did not include
In the source reviewed for this policy, there is no OptionEx account registration or sign-in, no paywall, and no in-app purchase transaction flow. No advertising SDK, App Tracking Transparency prompt, third-party analytics SDK, or third-party crash-reporting SDK was found. StoreKit is used to request a rating.
“Not found” does not mean the app can never change, does not replace Apple system diagnostics, does not replace App Store Connect privacy answers, and is not an absolute zero-tracking claim.
How far deletion goes
There is no one-step control that clears every store.
- Disconnecting IBKR deletes the Flex token, Query IDs, sync time, and Flex cache. Positions already imported remain.
- Reset All Trades hard-deletes position records. It does not delete notes, the Keychain token, or Query IDs.
- Deleting one position is currently a soft delete. This policy cannot promise that the record is immediately and permanently erased.
- Notes are stored separately. Disconnecting IBKR and Reset All Trades do not delete them. This policy does not describe a “delete all notes” control that the review did not find.
There is no CSV export of the financial ledger. Sharing one journal entry sends text through the system share sheet. The text can include the contract and profit or loss, and you choose who receives it.
Whether uninstalling the app, a system backup, or iCloud still holds a copy is up to Apple. Propagation of a deletion into an existing backup was not verified and is not guaranteed. You can email support@gansapp.com and name the step you already took if you need to ask what that step covers. The app does not offer a remote wipe.
Retention
Positions, notes, and Keychain items on the device remain until you use the steps above, or until the system handles uninstall or backup. The Flex cache lasts about 10 minutes by default and is cleared on the next read after it expires.
Support email is kept in order to answer you. Neither the app source nor this website establishes a fixed number of days, so this policy does not invent one. It also does not invent retention periods for technical logs held by IBKR, Finnhub, or the screener backend.
Contact and date
Email support@gansapp.com. Support page: Support. Effective and last updated: 2026-11-09.
© 2026 Kin Gan