Version: 0.1.0
Date: 2 November 2024
This toolset provides a growing toolset to help validate and utilize Open Cap Table Format datasets.
Currently, the dataset includes 5 tools:
This tool creates a workable JSON object of the content of an OCF folder from the path of the directory holding the OCF files.
const ocfPackage = readOcfPackage(ocfPackageFolderDir);
This tool creates a JSON array of the vesting periods for a "time standard" (i.e. a schedule in the form of " 4 years monthly" periods ).The tool also calculates and shows exercise transactions for the equity compensation issuance.
The tool can handle any allocation-type, any day_of_month designation, and any upfront vesting or cliff periods.
This tool utilizes a cliff_length
field within the Vesting_Conditions
object, which is not in the current released version of OCF as of November 2, 2024. Open-Cap-Table-Format-OCT Issue #514
If the vesting commencement date or cliff occurs before the grant date, the grant date is treated as a cliff. OCF-Tools PR #112
If both vestings
and vesting_terms_id
are present, vestings
takes precedence. Open-Cap_Format-OCF PR #515
If neither vestings
nor vesting_terms_id
are present, then the shares are treated as fully vested on issuance. Open-Cap_Format-OCF PR #515
The VestingScheduleService
takes the ocfPackage
returned from readOcfPackage
and an equity compensation issuance security_id
as parameters.
const vestingScheduleService = new VestingScheduleService(
ocfPackage,
equityCompensationIssuanceSecurityId
);
.getFullSchedule()
returns an array of the following objects:
{
Date: string;
"Event Type": "Start" | "Cliff" | "Vesting" | "Exercise";
"Event Quantity": number;
"Remaining Unvested": number;
"Cumulative Vested": number;
"Became Exercisable": number;
"Cumulative Exercised": number;
"Available to Exercise": number;
}
.getVestingStatus(checkDateString)
provides the above as of a given date.
Run npm run print:vesting_schedule.ts
, npm run print:vesting_status.ts
, and npm run print:iso_nso_test.ts
in the command line to see example results printed to console.
This tool allows a user to determine the ISO / NSO split for equity compensation issuances for a given stakeholder. This tool shows the split of NSO/ISO for each vesting period of the relative equity compensation issuances.
This tool is in development and should not be relied on for legal purposes.
This tool uses the vesting schedule generator under the hood and will only work for vesting schedules that can be generated using that tool.
This tool utilizes a valuation_id
within the Equity_Compensation_Issuance
object, which is not in the current released version of OCF as of November 2, 2024. Open-Cap-Table-Format-OCT Issue #535
If one or more valuation_id
s are provided, the fair market value as of the grant date is assumed to be last valuation prior to the grant date. Otherwise, the fair market value as of the grant date is assumed to be the exercise-price
.
This tool throws an error if neither a valuation_id
nor an exercise_price
is provided.
The ISONSOCalculatorService
takes the ocfPackage
returned from readOcfPackage
and an equity compensation issuance stakeholder_id
as parameters.
const isoNsoService = new ISONSOCalculatorService(ocfPackage, valuations);
.Results
returns an array of the following objects:
{
Year: number;
Date: string;
"Security Id": string;
"Event Type": "Start" | "Cliff" | "Vesting" | "Exercise";
"Became Exercisable": number;
"FMV": number;
StartingCapacity: number;
ISOShares: number;
NSOShares: number;
CapacityUtilized: number;
CapacityRemaining: number;
}
This tool tests the logical and structural validity of an OCF package. We are continuing to build out the rules set for validity but have good coverage for stock transactions and basic validations for all other transactions. The tool outputs a JSON object with the variables of result: string
, report: string[]
and snapshots: any[]
. The result shows if the package is valid or what the issue is if it is not. The report shows a list of all the validity checks completed per transaction and snapshots shows an array of end of day captables based on the package.
const ocfValidation = ocfValidator(ocfPackageFolderDir);
This tool allows the user to see the outstanding captable of a OCF package on a given date.
const snapshot = ocfSnapshot(ocfPackageFolderDir, ocfSnapshotDate);
Download this repository and run npm i; npm run build; npm link;
In the project that you want to use ocf-tools, run npm link ocf-tools
and add
const { readOcfPackage, generateSchedule, vestingStatusCheck, isoNsoCalculator, ocfValidator, ocfSnapshot } = require("ocf-tools");
to the top of the file you want to use the ocf-tools in.