<?xml version="1.0" encoding="UTF-8"?>
<!-- Vestoris feed format "position" version 1.0. Generated from the data set definition; see https://vestoris.com/help/feeds/position -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:vestoris:feed:position:1.0" targetNamespace="urn:vestoris:feed:position:1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
  <xs:annotation><xs:documentation>Positions. Quantity and average cost per account and security, e.g. from the custodian. Each loaded position replaces the open lots with one lot at the average cost. Use the lots data set to keep lot detail. Key: account + symbol.</xs:documentation></xs:annotation>
  <xs:element name="feed">
    <xs:annotation><xs:documentation>One file: the header attributes, then the records.</xs:documentation></xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="record" type="Record" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="businessDate" type="xs:date" use="required"><xs:annotation><xs:documentation>The business date the data is for (YYYY-MM-DD).</xs:documentation></xs:annotation></xs:attribute>
      <xs:attribute name="firm" use="required"><xs:annotation><xs:documentation>Your firm code, shown on Data › Feeds (e.g. F00012).</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[A-Z][0-9]{5}"/></xs:restriction></xs:simpleType></xs:attribute>
      <xs:attribute name="source" use="optional"><xs:annotation><xs:documentation>Who produced the file (vendor or system name).</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:maxLength value="80"/></xs:restriction></xs:simpleType></xs:attribute>
      <xs:attribute name="generated" type="xs:dateTime" use="required"><xs:annotation><xs:documentation>When the file was produced (UTC).</xs:documentation></xs:annotation></xs:attribute>
      <xs:attribute name="recordCount" type="xs:nonNegativeInteger" use="required"><xs:annotation><xs:documentation>The number of record elements. A file whose count does not match is refused (F004): it was probably cut short.</xs:documentation></xs:annotation></xs:attribute>
      <xs:attribute name="mode" use="optional" default="delta"><xs:annotation><xs:documentation>delta: only the records in the file change, and action=&quot;delete&quot; removes one. full: the file is complete; records it does not list are inactivated, up to the feed's safety threshold.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="delta"/><xs:enumeration value="full"/></xs:restriction></xs:simpleType></xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="Record">
    <xs:annotation><xs:documentation>One positions record. Elements may appear in any order.</xs:documentation></xs:annotation>
    <xs:all>
      <xs:element name="account" minOccurs="1">
        <xs:annotation><xs:documentation>The account code. Part of the key. A code: letters, digits, &quot;_&quot;, &quot;.&quot; or &quot;-&quot;, up to 20. Part of the key.</xs:documentation></xs:annotation>
        <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[A-Z0-9][A-Z0-9_.\-]{0,19}"/></xs:restriction></xs:simpleType>
      </xs:element>
      <xs:element name="symbol" minOccurs="1">
        <xs:annotation><xs:documentation>The security. Part of the key. A ticker symbol: letters, digits, &quot;.&quot; or &quot;-&quot;, up to 12. Part of the key.</xs:documentation></xs:annotation>
        <xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[A-Z][A-Z0-9.\-]{0,11}"/></xs:restriction></xs:simpleType>
      </xs:element>
      <xs:element name="quantity" minOccurs="1">
        <xs:annotation><xs:documentation>Shares held (negative for a short). A decimal number written as text, e.g. 1234.5.</xs:documentation></xs:annotation>
        <xs:simpleType><xs:restriction base="xs:decimal"><xs:totalDigits value="25"/><xs:fractionDigits value="10"/></xs:restriction></xs:simpleType>
      </xs:element>
      <xs:element name="avgCost" minOccurs="1">
        <xs:annotation><xs:documentation>Average cost per share. A decimal number written as text, e.g. 1234.5 (min 0).</xs:documentation></xs:annotation>
        <xs:simpleType><xs:restriction base="xs:decimal"><xs:minInclusive value="0"/><xs:totalDigits value="25"/><xs:fractionDigits value="10"/></xs:restriction></xs:simpleType>
      </xs:element>
      <xs:element name="asOf" minOccurs="0">
        <xs:annotation><xs:documentation>The date of the position (the lot&apos;s acquired date for tax purposes when no lot detail is given). An ISO date, YYYY-MM-DD.</xs:documentation></xs:annotation>
        <xs:simpleType><xs:restriction base="xs:date"></xs:restriction></xs:simpleType>
      </xs:element>
    </xs:all>
    <xs:attribute name="action" use="optional" default="upsert"><xs:annotation><xs:documentation>upsert (insert or update by key) or delete (removes the record; a security or account is inactivated, never deleted).</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="upsert"/><xs:enumeration value="delete"/></xs:restriction></xs:simpleType></xs:attribute>
  </xs:complexType>
</xs:schema>
