FTPS
FTPS (FTP over TLS/SSL) datasources allow CloudQuant Data Liberator to read CSV, TSV, and other delimited files from FTP servers secured with TLS encryption. This is commonly used with legacy financial data feeds and vendor systems that require explicit FTPS connections.
Connection Configuration
Required Fields
| Field | Type | Description |
|---|
connection_type | string | Must be "ftps" |
host | string | FTP server hostname or IP address |
user | string | Username for authentication |
Optional Fields
| Field | Type | Default | Description |
|---|
port | int | 21 | FTP control port number |
password | string | | Password for authentication |
key | string | | Client certificate private key (PEM format) for certificate-based authentication |
no_verify | bool | false | Skip TLS certificate verification |
prefix | string | "" | Remote directory path to use as root |
mount_point | string | | Local mount path for FUSE-based access |
config_name | string | | Internal configuration identifier |
Setting no_verify to true disables TLS certificate validation. This should only be used for testing or when connecting to servers with self-signed certificates on trusted internal networks. Never use this in production with external servers.
You must provide either password or key for authentication. Password authentication is most common for FTPS. Client certificate authentication (key) is used when the server requires mutual TLS.
Example Connection
{
"name": "ftps-vendor-feed",
"connection_type": "ftps",
"host": "ftp.securefeed.example.com",
"port": 21,
"user": "datafeed",
"password": "v3nd0rP@ss",
"prefix": "/outgoing/daily/"
}
Example Connection (Self-Signed Certificate)
{
"name": "ftps-internal-data",
"connection_type": "ftps",
"host": "ftp.internal.corp.net",
"port": 990,
"user": "etl-service",
"password": "internalPass123",
"no_verify": true,
"prefix": "/data/exports/"
}
Dataset Configuration (data_args)
The data_args fields are identical to all file-based sources. See Local File for the full reference. The file_pattern is evaluated relative to the prefix configured on the connection.
Required data_args
| Field | Type | Description |
|---|
file_pattern | string | Glob pattern relative to the prefix, e.g., "*.csv" |
data_dt_column | string or list | Column(s) containing the datetime value |
data_dt_format | string or list | strptime format or special values ("muts", "uts", "datetime") |
data_key_column | string or list | Symbol/key column(s) |
Optional data_args
| Field | Type | Default | Description |
|---|
sep_override | string | "," | Delimiter character |
encoding | string | "utf-8" | File encoding |
data_dt_timezone | string | "UTC" | Source data timezone |
fname_dt_regex | string | | Regex to extract date from filename |
fname_dt_format | string | | strptime format for filename date |
fname_dt_timezone | string | | Timezone of filename date |
fname_dt_nudge | int | 0 | Microsecond offset for filename date |
fname_dt_approx_seconds | int | | Approximate seconds per file |
arrow_sort | list | ["symbol", "muts"] | Sort order |
arrow_timestamp | bool | true | Generate human-readable timestamp column |
Complete Example
Connection
{
"name": "ftps-reference-data",
"connection_type": "ftps",
"host": "ftps.refdata.example.com",
"port": 21,
"user": "cq-download",
"password": "refDataP@ss",
"prefix": "/reference/securities/"
}
Dataset
{
"name": "security-master",
"connection": "ftps-reference-data",
"data_args": {
"file_pattern": "secmaster_*.csv",
"sep_override": "|",
"encoding": "utf-8",
"data_dt_column": "effective_date",
"data_dt_format": "%Y-%m-%d",
"data_dt_timezone": "America/New_York",
"data_key_column": "cusip",
"fname_dt_regex": "secmaster_(\\d{8})\\.csv",
"fname_dt_format": "%Y%m%d",
"fname_dt_timezone": "America/New_York",
"fname_dt_approx_seconds": 86400,
"arrow_sort": ["symbol", "muts"],
"arrow_timestamp": true
},
"schema": [
{ "name": "cusip", "type": "string", "group": "key", "description": "CUSIP identifier" },
{ "name": "effective_date", "type": "string", "group": "time", "description": "Effective date" },
{ "name": "ticker", "type": "string", "group": "value", "description": "Ticker symbol" },
{ "name": "company_name", "type": "string", "group": "value", "description": "Company name" },
{ "name": "exchange", "type": "string", "group": "value", "description": "Primary exchange" },
{ "name": "sector", "type": "string", "group": "value", "description": "GICS sector" },
{ "name": "shares_outstanding", "type": "int64", "group": "value", "description": "Shares outstanding" }
]
}
FTPS vs SFTP
| Feature | FTPS | SFTP |
|---|
| Protocol | FTP + TLS | SSH subsystem |
| Default port | 21 (explicit) or 990 (implicit) | 22 |
| Firewall friendliness | Requires data port range | Single port |
| Common use | Legacy financial feeds | Modern systems |
| Certificate | TLS/SSL certificates | SSH host keys |
If your data vendor supports both FTPS and SFTP, prefer SFTP. It uses a single port, simplifies firewall configuration, and is generally easier to manage.
Network Requirements
| Requirement | Detail |
|---|
| Outbound port | TCP port 21 (control) + passive data port range to the FTP server |
| Passive mode | FTP passive mode is required; ensure the passive port range is open |
| DNS resolution | The hostname must resolve from the CloudQuant Data Liberator host |
| TLS support | Server must support explicit TLS (AUTH TLS) on port 21, or implicit TLS on port 990 |