Skip to content

Societal CDMO, Inc.: basic earnings per share

Basic earnings per share for Societal CDMO, Inc. Inspect selected reporting periods, original units and SEC filing links; download the financial history.

All Societal CDMO, Inc. financial histories

What this measure means

Reported earnings or loss per basic common share or unit. Inspect attribution, share classes and restatements before comparing periods. This is not a market return.

Exact concept: us-gaap:EarningsPerShareBasic. Each value covers an annual-duration reporting interval, shown with both start and end dates. Different units remain separate; no currency conversion or interpolation is applied.

Coverage of this history

Selected reporting periods run from 2014-01-01 to 2023-12-31. The SEC response was captured on 2026-09-22.

This selected history ends more than two years before capture. Do not treat its final value as a current balance or current annual result. More recent filings may use another accounting tag; inspect the filings before drawing conclusions about the company.

Selected filing history

Basic earnings per share in original reported units, latest-filed observation per period
Period startPeriod endValueUnitFiledSource filing
2023-01-012023-12-31-0.14USD/shares2024-03-2210-K · 0000950170-24-035480
2022-01-012022-12-31-0.34USD/shares2024-03-2210-K · 0000950170-24-035480
2021-01-012021-12-31-0.26USD/shares2024-03-2210-K · 0000950170-24-035480
2020-01-012020-12-31-1.16USD/shares2023-03-0110-K · 0000950170-23-005586
2019-01-012019-12-31-0.83USD/shares2022-03-0110-K · 0000950170-22-002545
2018-01-012018-12-31-3.9USD/shares2021-02-2610-K · 0001564590-21-009198
2017-01-012017-12-31-2.63USD/shares2020-03-0410-K · 0001564590-20-008538
2016-01-012016-12-31-2.82USD/shares2018-03-0210-K · 0001564590-18-004277
2015-01-012015-12-310.36USD/shares2018-03-0210-K · 0001564590-18-004277
2014-01-012014-12-31-2.79USD/shares2016-03-2410-K · 0001193125-16-516045

Related Societal CDMO, Inc. histories

Inspect the source

Entity
Societal CDMO, Inc. / CIK 0001588972
Captured
SEC response SHA-256
2a0a3289c1412924a2c8664071a41dd1817c3e2cd6afb5a234680738ff8dfd60

Current SEC company facts · Download the original response snapshot (gzip) · Download the selected JSON

Latest-filed annual-report facts per unit and reporting period at capture time. Duration facts cover 300 to 400 days. This selection can include restatements and is not a point-in-time backtest dataset. Missing concepts are omitted, never zero-filled. Values retain original units and are not currency converted. Extended concepts require compatible unit shapes and at least three reporting ends with changing values within one unit. Constant or incompatible added histories are omitted.

Public company accounting reference, not market prices, returns, an investment recommendation, or ALPHAC performance. Validate a separately constructed return series with the validation API; accounting values are not returns.

Use this in research

A financial period ends before its results become public. Use the filing date as a minimum availability boundary, inspect amendments, and retain the original filing vintage when testing historical signals. This latest-filed selection can contain information unavailable at the time.

These pages do not supply prices, total-return histories, corporate-action adjustments or a tradable universe. Build those inputs separately before evaluating a strategy. A profitable backtest can still reflect selection bias or costs that were left out.

Research methodology · Execution and cost assumptions · Check backtest overfitting

Build with the open-source tools

Use these accounting records as inspectable inputs. When you have constructed a return series, the validation tools can help test its statistical evidence and preserve the result with its limitations.

Read the published dataset with Python
import json
from urllib.request import urlopen

with urlopen("https://canlicapital.com/company-data/0001588972.json") as response:
    record = json.load(response)
print(record["fetched_at"])
print(record["policy"])
for concept in record["concepts"]:
    print(concept["tag"], next(iter(concept["observations"])))