跳到主要内容

系统配置

Fonrex 从环境变量读取设置。将 .env.example 复制为 .env 并进行编辑:Docker Compose 会将 .env 加载到 API 容器中,make run 在本地运行时也会加载它。

每行只写一个 KEY=value,注释单独成行:写在空值之后的注释会被读作值。

身份验证​

变量默认值说明
FONREX_API_KEY(空)完全访问 API 密钥。可使用 echo "frx_live_$(openssl rand -hex 24)" 生成
FONREX_API_KEYS(空)额外的完全访问密钥,以逗号分隔
FONREX_READ_ONLY_API_KEYS(空)只读密钥,以逗号分隔:可以读取数据,但不能清除缓存、清理数据库、触发数据导入或修改订阅
FONREX_AUTH_REQUIREDtrue设为 false 时开放所有路由,仅在未配置任何密钥时生效。仅可用于任何网络都无法访问的实例

客户端通过 Authorization: Bearer <key> 或 X-API-KEY: <key> 发送密钥。请参阅第一次 API 调用。

数据库和缓存​

变量默认值说明
DATABASE_URLpostgresql://fonrex:fonrex_password@localhost:5432/fonrex本地运行时使用的地址。使用 Docker Compose 时,会被替换为根据 POSTGRES_PASSWORD 构建的 db 服务地址
ASYNC_DATABASE_URL(空)asyncpg 地址;为空时由 DATABASE_URL 推导(Docker Compose 会将其置空)
POSTGRES_DB / POSTGRES_USERfonrex保留给本地工具使用;docker-compose.yml 使用固定值(用户 fonrex,数据库 fonrex 由 postgres-init.sh 创建)
POSTGRES_PASSWORDfonrex_password请在首次启动前修改(字母、数字、-、_)
REDIS_URLredis://localhost:6379/0使用 Docker Compose 时会被替换为 redis 服务地址
CACHE_TTL300Redis 默认有效期,单位为秒(每个缓存类别都有各自的有效期,可通过 GET /cache/stats 查看)
WEB_CONCURRENCY1Gunicorn worker 数量(Docker Compose)。请保持为 1:实时 worker 和每日 canary 都运行在 API 进程中

历史数据采集​

变量默认值说明
INGEST_CONCURRENCY5批量采集时并行执行的采集数量(调用方未指定 concurrency 时)
INGEST_YF_DELAY0.5回退到 TradingView 之前的暂停时间,单位为秒
INGEST_TV_DELAY2.0会被读取,但当前代码未使用
INGEST_BATCH_SIZE1000每次数据库 upsert 的行数

实时流​

变量默认值说明
TV_MAX_CONNECTIONS10同时存在的 TradingView WebSocket 连接数
TV_RECONNECT_DELAY5首次重连延迟,单位为秒,每次加倍,最多 60 秒
REALTIME_QUOTE_TTL60报价快照在 Redis 中的有效期,单位为秒

技术指标​

变量默认值说明
TECHNICAL_CACHE_ENABLEDtrue在 Redis 中缓存指标结果
TECHNICAL_DEFAULT_LIMIT500请求未指定 limit 时加载的 K 线数量(10 到 5000)
TECHNICAL_MAX_BATCH_TICKERS20POST /technical/batch 接受的 ticker 数量上限
TECHNICAL_MAX_BATCH_INDICATORS10POST /technical/batch 接受的指标数量上限

新闻​

变量默认值说明
NEWS_CACHE_TTL1800新闻响应在 Redis 中的有效期,单位为秒
NEWS_DEFAULT_LIMIT20请求未指定 limit 时,单个 ticker 返回的文章数
NEWS_MAX_LIMIT100请求可指定的最大 limit
NEWS_DEDUP_SIMILARITY0.85标题相似度超过该值时,两篇文章视为同一篇

估值(DCF)和宏观利率​

变量默认值说明
DCF_CACHE_TTL21600DCF 响应在 Redis 中的有效期(6 小时)
DCF_DEFAULT_PROJECTION_YEARS5预测年数(3 到 10)
DCF_RISK_FREE_RATE0.04FRED 未提供数据时使用的无风险利率
DCF_EQUITY_RISK_PREMIUM0.055股权风险溢价,以比率表示
DCF_TERMINAL_GROWTH_RATE0.025永续增长率,以比率表示
FRED_API_KEY(空)来自 fred.stlouisfed.org 的免费密钥;未设置时使用已存储的利率或 DCF_RISK_FREE_RATE
MACRO_RATES_CACHE_TTL21600宏观利率在 Redis 中的有效期(6 小时)

数据提供方监控​

变量默认值说明
VALIDATION_OUTLIER_THRESHOLD0.50与中位数的偏差超过该值时,该值被视为异常值
VALIDATION_MIN_PROVIDERS2进行共识检查所需的数据提供方数量
CANARY_RUN_HOUR6每日 canary 运行的 UTC 小时
CANARY_PROVIDER_SEMAPHORE3canary 并行检查的数据提供方数量
CANARY_PRICE_RANGE_TTL_SECONDS21600动态价格范围的有效期(6 小时)
CANARY_PRICE_RANGE_NEGATIVE_TTL_SECONDS300无法计算价格范围后的重试延迟
ALERT_CANARY_CRITICAL3触发严重告警的 canary 失败次数
ALERT_SUCCESS_RATE_CRITICAL0.70成功率低于该值时告警为严重级别
ALERT_SUCCESS_RATE_WARNING0.85成功率低于该值时告警为警告级别

数据提供方和出站请求​

变量默认值说明
SEC_EDGAR_EMAILcontact@fonrex.io发送给 SEC EDGAR 的联系地址(SEC 政策要求):请填写您自己的地址
OPENFIGI_API_KEY(空)可选的 OpenFIGI 密钥(更高的速率限制)
BARRONS_TOKEN、MARKETWATCH_TOKEN、WSJ_TOKEN(空)这些网站的可选 token
FONREX_PROVIDER_MAX_CONCURRENCY4单个数据提供方可同时执行的请求数(1 到 64)
FONREX_PROXY_URL(空)用于抓取网站的可选出站 HTTP 代理(不用于 yfinance 或 TradingView)
FONREX_PROXY_PROVIDERS(空)使用代理的数据提供方,以逗号分隔;为空表示全部
LOGO_TOKEN(空)从 img.logo.dev 下载 logo 所用的 token

使用日志和启动​

变量默认值说明
USAGE_LOG_IPnone在 usage_logs 中保留的调用方 IP 部分:none、truncated(仅网络部分)或 full
USAGE_LOG_RETENTION_DAYS90使用日志的保留天数;0 表示全部保留
SEED_ON_FIRST_RUNfalse数据库为空时,在首次启动时导入 data/etf.csv
OPENBB_ALLOWED_ORIGINhttps://pro.openbb.coCORS 允许的来源,以逗号分隔